// $ANTLR 3.1.2 C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g 2009-05-22 14:33:01

// The variable 'variable' is assigned but its value is never used.
#pragma warning disable 168, 219
// Unreachable code detected.
#pragma warning disable 162
namespace 
	EditeurSyntaxiqueVocal.Languages.LanguageZ.Grammaire.output

{

	using System.Collections.Generic;
	using System.Drawing;


using System;
using Antlr.Runtime;
using IList 		= System.Collections.IList;
using ArrayList 	= System.Collections.ArrayList;
using Stack 		= Antlr.Runtime.Collections.StackList;

using IDictionary	= System.Collections.IDictionary;
using Hashtable 	= System.Collections.Hashtable;

public partial class GrammaireZEnuParser : Parser
{
    public static readonly string[] tokenNames = new string[] 
	{
        "<invalid>", 
		"<EOR>", 
		"<DOWN>", 
		"<UP>", 
		"ID", 
		"CSTE", 
		"OPR", 
		"STRING", 
		"WS", 
		"COMMENT", 
		"'begin'", 
		"'end'", 
		"';'", 
		"'action'", 
		"'('", 
		"')'", 
		"'function'", 
		"':'", 
		"'a'", 
		"'some'", 
		"','", 
		"'machine_car'", 
		"'machine_nombre'", 
		"'pointer'", 
		"'pointers'", 
		"'to'", 
		"'list'", 
		"'lists'", 
		"'bst'", 
		"'of'", 
		"'array'", 
		"'queue'", 
		"'vector'", 
		"'buffer'", 
		"'header'", 
		"'dynamic'", 
		"'dynamics'", 
		"'structure'", 
		"'integer'", 
		"'integers'", 
		"'boolean'", 
		"'booleans'", 
		"'char'", 
		"'chars'", 
		"'string'", 
		"'strings'", 
		"'stack'", 
		"'stacks'", 
		"'definition'", 
		"'definitions'"
    };

    public const int CSTE = 5;
    public const int T__29 = 29;
    public const int T__28 = 28;
    public const int T__27 = 27;
    public const int T__26 = 26;
    public const int T__25 = 25;
    public const int T__24 = 24;
    public const int T__23 = 23;
    public const int T__22 = 22;
    public const int T__21 = 21;
    public const int T__20 = 20;
    public const int ID = 4;
    public const int EOF = -1;
    public const int T__19 = 19;
    public const int T__16 = 16;
    public const int T__15 = 15;
    public const int T__18 = 18;
    public const int T__17 = 17;
    public const int T__12 = 12;
    public const int T__11 = 11;
    public const int T__14 = 14;
    public const int T__13 = 13;
    public const int T__10 = 10;
    public const int COMMENT = 9;
    public const int T__42 = 42;
    public const int T__43 = 43;
    public const int T__40 = 40;
    public const int T__41 = 41;
    public const int T__46 = 46;
    public const int T__47 = 47;
    public const int T__44 = 44;
    public const int T__45 = 45;
    public const int T__48 = 48;
    public const int T__49 = 49;
    public const int OPR = 6;
    public const int T__30 = 30;
    public const int T__31 = 31;
    public const int T__32 = 32;
    public const int WS = 8;
    public const int T__33 = 33;
    public const int T__34 = 34;
    public const int T__35 = 35;
    public const int T__36 = 36;
    public const int T__37 = 37;
    public const int T__38 = 38;
    public const int T__39 = 39;
    public const int STRING = 7;

    // delegates
    // delegators



        public GrammaireZEnuParser(ITokenStream input)
    		: this(input, new RecognizerSharedState()) {
        }

        public GrammaireZEnuParser(ITokenStream input, RecognizerSharedState state)
    		: base(input, state) {
            InitializeCyclicDFAs();

             
        }
        

    override public string[] TokenNames {
		get { return GrammaireZEnuParser.tokenNames; }
    }

    override public string GrammarFileName {
		get { return "C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g"; }
    }


    	public Dictionary<string, object> ListProgram =  new Dictionary<string, object>();			



    // $ANTLR start "program"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:18:1: program : algoz ;
    public void program() // throws RecognitionException [1]
    {   

         	GlobalObjects.input =input;

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:22:5: ( algoz )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:22:9: algoz
            {
            	PushFollow(FOLLOW_algoz_in_program66);
            	algoz();
            	state.followingStackPointer--;
            	if (state.failed) return ;

            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "program"


    // $ANTLR start "algoz"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:25:1: algoz : (st= definition p= ps )? d= 'begin' l= lisIngnore e= 'end' ( ';' )? ( (f= fon | a= act ) ( ';' )? )* ;
    public void algoz() // throws RecognitionException [1]
    {   
        IToken d = null;
        IToken e = null;
        GrammaireZEnuParser.definition_return st = default(GrammaireZEnuParser.definition_return);

        List<VariableDeclare> p = default(List<VariableDeclare>);




        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:28:2: ( (st= definition p= ps )? d= 'begin' l= lisIngnore e= 'end' ( ';' )? ( (f= fon | a= act ) ( ';' )? )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:28:4: (st= definition p= ps )? d= 'begin' l= lisIngnore e= 'end' ( ';' )? ( (f= fon | a= act ) ( ';' )? )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:28:4: (st= definition p= ps )?
            	int alt1 = 2;
            	int LA1_0 = input.LA(1);

            	if ( ((LA1_0 >= 48 && LA1_0 <= 49)) )
            	{
            	    alt1 = 1;
            	}
            	switch (alt1) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:28:5: st= definition p= ps
            	        {
            	        	PushFollow(FOLLOW_definition_in_algoz88);
            	        	st = definition();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return ;
            	        	PushFollow(FOLLOW_ps_in_algoz93);
            	        	p = ps();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return ;

            	        }
            	        break;

            	}

            	d=(IToken)Match(input,10,FOLLOW_10_in_algoz102); if (state.failed) return ;
            	PushFollow(FOLLOW_lisIngnore_in_algoz106);
            	lisIngnore();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	e=(IToken)Match(input,11,FOLLOW_11_in_algoz110); if (state.failed) return ;
            	if ( (state.backtracking==0) )
            	{
            	  	
            	  	 BaseProgramme baseProgramme;	 
            	  	 List<VariableDeclare> l = new List<VariableDeclare>();
            	  	 if(p != null) l = p;
            	  	 if(st != null) baseProgramme = new BaseProgramme(((st != null) ? ((IToken)st.Start) : null), e, d, l);
            	  	 baseProgramme = new BaseProgramme(new Point(0,0), e, d, l);
            	  	 try{
            	  	 	ListProgram.Add("$", baseProgramme);
            	  	 }catch (ArgumentException ae){
            	  	 }
            	  	
            	}
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:3: ( ';' )?
            	int alt2 = 2;
            	int LA2_0 = input.LA(1);

            	if ( (LA2_0 == 12) )
            	{
            	    alt2 = 1;
            	}
            	switch (alt2) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:4: ';'
            	        {
            	        	Match(input,12,FOLLOW_12_in_algoz119); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:10: ( (f= fon | a= act ) ( ';' )? )*
            	do 
            	{
            	    int alt5 = 2;
            	    int LA5_0 = input.LA(1);

            	    if ( (LA5_0 == 13 || LA5_0 == 16) )
            	    {
            	        alt5 = 1;
            	    }


            	    switch (alt5) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:12: (f= fon | a= act ) ( ';' )?
            			    {
            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:12: (f= fon | a= act )
            			    	int alt3 = 2;
            			    	int LA3_0 = input.LA(1);

            			    	if ( (LA3_0 == 16) )
            			    	{
            			    	    alt3 = 1;
            			    	}
            			    	else if ( (LA3_0 == 13) )
            			    	{
            			    	    alt3 = 2;
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            			    	    NoViableAltException nvae_d3s0 =
            			    	        new NoViableAltException("", 3, 0, input);

            			    	    throw nvae_d3s0;
            			    	}
            			    	switch (alt3) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:14: f= fon
            			    	        {
            			    	        	PushFollow(FOLLOW_fon_in_algoz129);
            			    	        	fon();
            			    	        	state.followingStackPointer--;
            			    	        	if (state.failed) return ;

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:23: a= act
            			    	        {
            			    	        	PushFollow(FOLLOW_act_in_algoz136);
            			    	        	act();
            			    	        	state.followingStackPointer--;
            			    	        	if (state.failed) return ;

            			    	        }
            			    	        break;

            			    	}

            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:30: ( ';' )?
            			    	int alt4 = 2;
            			    	int LA4_0 = input.LA(1);

            			    	if ( (LA4_0 == 12) )
            			    	{
            			    	    alt4 = 1;
            			    	}
            			    	switch (alt4) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:40:31: ';'
            			    	        {
            			    	        	Match(input,12,FOLLOW_12_in_algoz140); if (state.failed) return ;

            			    	        }
            			    	        break;

            			    	}


            			    }
            			    break;

            			default:
            			    goto loop5;
            	    }
            	} while (true);

            	loop5:
            		;	// Stops C# compiler whining that label 'loop5' has no statements


            }

        }
        catch (Exception ex) 
        {
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "algoz"


    // $ANTLR start "act"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:44:1: act : a= 'action' (id= ID )? ( '(' (i= li )? ')' )? ( ';' )? ( ( definition )? (p= ps )? )? d= 'begin' l= lisIngnore e= 'end' ;
    public void act() // throws RecognitionException [1]
    {   
        IToken a = null;
        IToken id = null;
        IToken d = null;
        IToken e = null;
        List<VariableDeclare> i = default(List<VariableDeclare>);

        List<VariableDeclare> p = default(List<VariableDeclare>);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:2: (a= 'action' (id= ID )? ( '(' (i= li )? ')' )? ( ';' )? ( ( definition )? (p= ps )? )? d= 'begin' l= lisIngnore e= 'end' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:4: a= 'action' (id= ID )? ( '(' (i= li )? ')' )? ( ';' )? ( ( definition )? (p= ps )? )? d= 'begin' l= lisIngnore e= 'end'
            {
            	a=(IToken)Match(input,13,FOLLOW_13_in_act172); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:17: (id= ID )?
            	int alt6 = 2;
            	int LA6_0 = input.LA(1);

            	if ( (LA6_0 == ID) )
            	{
            	    int LA6_1 = input.LA(2);

            	    if ( (synpred6_GrammaireZEnu()) )
            	    {
            	        alt6 = 1;
            	    }
            	}
            	switch (alt6) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: id= ID
            	        {
            	        	id=(IToken)Match(input,ID,FOLLOW_ID_in_act176); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:23: ( '(' (i= li )? ')' )?
            	int alt8 = 2;
            	alt8 = dfa8.Predict(input);
            	switch (alt8) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:25: '(' (i= li )? ')'
            	        {
            	        	Match(input,14,FOLLOW_14_in_act182); if (state.failed) return ;
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:30: (i= li )?
            	        	int alt7 = 2;
            	        	int LA7_0 = input.LA(1);

            	        	if ( (LA7_0 == ID) )
            	        	{
            	        	    alt7 = 1;
            	        	}
            	        	switch (alt7) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: i= li
            	        	        {
            	        	        	PushFollow(FOLLOW_li_in_act186);
            	        	        	i = li();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}

            	        	Match(input,15,FOLLOW_15_in_act189); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:42: ( ';' )?
            	int alt9 = 2;
            	int LA9_0 = input.LA(1);

            	if ( (LA9_0 == 12) )
            	{
            	    int LA9_1 = input.LA(2);

            	    if ( (synpred9_GrammaireZEnu()) )
            	    {
            	        alt9 = 1;
            	    }
            	}
            	switch (alt9) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:43: ';'
            	        {
            	        	Match(input,12,FOLLOW_12_in_act195); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:49: ( ( definition )? (p= ps )? )?
            	int alt12 = 2;
            	int LA12_0 = input.LA(1);

            	if ( ((LA12_0 >= ID && LA12_0 <= COMMENT) || (LA12_0 >= 11 && LA12_0 <= 49)) )
            	{
            	    alt12 = 1;
            	}
            	else if ( (LA12_0 == 10) )
            	{
            	    int LA12_2 = input.LA(2);

            	    if ( (synpred12_GrammaireZEnu()) )
            	    {
            	        alt12 = 1;
            	    }
            	}
            	switch (alt12) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:50: ( definition )? (p= ps )?
            	        {
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:50: ( definition )?
            	        	int alt10 = 2;
            	        	int LA10_0 = input.LA(1);

            	        	if ( ((LA10_0 >= 48 && LA10_0 <= 49)) )
            	        	{
            	        	    int LA10_1 = input.LA(2);

            	        	    if ( (synpred10_GrammaireZEnu()) )
            	        	    {
            	        	        alt10 = 1;
            	        	    }
            	        	}
            	        	switch (alt10) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: definition
            	        	        {
            	        	        	PushFollow(FOLLOW_definition_in_act200);
            	        	        	definition();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}

            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:63: (p= ps )?
            	        	int alt11 = 2;
            	        	int LA11_0 = input.LA(1);

            	        	if ( ((LA11_0 >= ID && LA11_0 <= COMMENT) || (LA11_0 >= 11 && LA11_0 <= 49)) )
            	        	{
            	        	    alt11 = 1;
            	        	}
            	        	switch (alt11) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: p= ps
            	        	        {
            	        	        	PushFollow(FOLLOW_ps_in_act205);
            	        	        	p = ps();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}


            	        }
            	        break;

            	}

            	d=(IToken)Match(input,10,FOLLOW_10_in_act213); if (state.failed) return ;
            	PushFollow(FOLLOW_lisIngnore_in_act217);
            	lisIngnore();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	e=(IToken)Match(input,11,FOLLOW_11_in_act221); if (state.failed) return ;
            	if ( (state.backtracking==0) )
            	{

            	  	 ActionToken actionToken;
            	  	 IToken t = d;  
            	  	 if(a != null) t = a;
            	  	 if(id == null) id = a;
            	  	 List<VariableDeclare> l = new List<VariableDeclare>();
            	  	 if(p != null) l = p;	 
            	  	 actionToken = new ActionToken(t, e, id, d, l, i);
            	  	 try{
            	  	 	ListProgram.Add(((id != null) ? id.Text : null), actionToken);
            	  	 }catch (ArgumentException ae){
            	  	 }
            	  	
            	}

            }

        }
        catch (Exception ex) 
        {
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "act"


    // $ANTLR start "fon"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:62:1: fon : f= 'function' (id= ID )? '(' (i= li )? ')' ':' (ta= typ )? ( ( definition )? (p= ps )? )? d= 'begin' l= lisIngnore e= 'end' ;
    public void fon() // throws RecognitionException [1]
    {   
        IToken f = null;
        IToken id = null;
        IToken d = null;
        IToken e = null;
        List<VariableDeclare> i = default(List<VariableDeclare>);

        GrammaireZEnuParser.typ_return ta = default(GrammaireZEnuParser.typ_return);

        List<VariableDeclare> p = default(List<VariableDeclare>);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:2: (f= 'function' (id= ID )? '(' (i= li )? ')' ':' (ta= typ )? ( ( definition )? (p= ps )? )? d= 'begin' l= lisIngnore e= 'end' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:4: f= 'function' (id= ID )? '(' (i= li )? ')' ':' (ta= typ )? ( ( definition )? (p= ps )? )? d= 'begin' l= lisIngnore e= 'end'
            {
            	f=(IToken)Match(input,16,FOLLOW_16_in_fon251); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:19: (id= ID )?
            	int alt13 = 2;
            	int LA13_0 = input.LA(1);

            	if ( (LA13_0 == ID) )
            	{
            	    alt13 = 1;
            	}
            	switch (alt13) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: id= ID
            	        {
            	        	id=(IToken)Match(input,ID,FOLLOW_ID_in_fon255); if (state.failed) return ;

            	        }
            	        break;

            	}

            	Match(input,14,FOLLOW_14_in_fon258); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:29: (i= li )?
            	int alt14 = 2;
            	int LA14_0 = input.LA(1);

            	if ( (LA14_0 == ID) )
            	{
            	    alt14 = 1;
            	}
            	switch (alt14) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: i= li
            	        {
            	        	PushFollow(FOLLOW_li_in_fon262);
            	        	i = li();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return ;

            	        }
            	        break;

            	}

            	Match(input,15,FOLLOW_15_in_fon265); if (state.failed) return ;
            	Match(input,17,FOLLOW_17_in_fon267); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:44: (ta= typ )?
            	int alt15 = 2;
            	alt15 = dfa15.Predict(input);
            	switch (alt15) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: ta= typ
            	        {
            	        	PushFollow(FOLLOW_typ_in_fon271);
            	        	ta = typ();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:50: ( ( definition )? (p= ps )? )?
            	int alt18 = 2;
            	int LA18_0 = input.LA(1);

            	if ( ((LA18_0 >= ID && LA18_0 <= COMMENT) || (LA18_0 >= 11 && LA18_0 <= 49)) )
            	{
            	    alt18 = 1;
            	}
            	else if ( (LA18_0 == 10) )
            	{
            	    int LA18_2 = input.LA(2);

            	    if ( (synpred18_GrammaireZEnu()) )
            	    {
            	        alt18 = 1;
            	    }
            	}
            	switch (alt18) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:52: ( definition )? (p= ps )?
            	        {
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:52: ( definition )?
            	        	int alt16 = 2;
            	        	int LA16_0 = input.LA(1);

            	        	if ( ((LA16_0 >= 48 && LA16_0 <= 49)) )
            	        	{
            	        	    int LA16_1 = input.LA(2);

            	        	    if ( (synpred16_GrammaireZEnu()) )
            	        	    {
            	        	        alt16 = 1;
            	        	    }
            	        	}
            	        	switch (alt16) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: definition
            	        	        {
            	        	        	PushFollow(FOLLOW_definition_in_fon276);
            	        	        	definition();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}

            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:65: (p= ps )?
            	        	int alt17 = 2;
            	        	int LA17_0 = input.LA(1);

            	        	if ( ((LA17_0 >= ID && LA17_0 <= COMMENT) || (LA17_0 >= 11 && LA17_0 <= 49)) )
            	        	{
            	        	    alt17 = 1;
            	        	}
            	        	switch (alt17) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: p= ps
            	        	        {
            	        	        	PushFollow(FOLLOW_ps_in_fon281);
            	        	        	p = ps();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}


            	        }
            	        break;

            	}

            	d=(IToken)Match(input,10,FOLLOW_10_in_fon289); if (state.failed) return ;
            	PushFollow(FOLLOW_lisIngnore_in_fon293);
            	lisIngnore();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	e=(IToken)Match(input,11,FOLLOW_11_in_fon297); if (state.failed) return ;
            	if ( (state.backtracking==0) )
            	{

            	  	 FonctionToken fonctionToken;
            	  	 IToken t = d;  
            	  	 if(f != null) t = f;
            	  	 if(id == null) id = f;
            	  	 List<VariableDeclare> l = new List<VariableDeclare>();
            	  	 if(p != null) l = p;	 
            	  	 fonctionToken = new FonctionToken(t, e, id, ((ta != null) ? input.ToString((IToken)(ta.Start),(IToken)(ta.Stop)) : null), d, l,i);
            	  	 try{
            	  	 	ListProgram.Add(((id != null) ? id.Text : null), fonctionToken);
            	  	 }catch (ArgumentException ae){
            	  	 }	 
            	  	
            	}

            }

        }
        catch (Exception ex) 
        {
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fon"


    // $ANTLR start "lisIngnore"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:80:1: lisIngnore : (~ ( 'end' ) )* ;
    public void lisIngnore() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:81:2: ( (~ ( 'end' ) )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:81:4: (~ ( 'end' ) )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:81:4: (~ ( 'end' ) )*
            	do 
            	{
            	    int alt19 = 2;
            	    int LA19_0 = input.LA(1);

            	    if ( ((LA19_0 >= ID && LA19_0 <= 10) || (LA19_0 >= 12 && LA19_0 <= 49)) )
            	    {
            	        alt19 = 1;
            	    }


            	    switch (alt19) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:81:5: ~ ( 'end' )
            			    {
            			    	if ( (input.LA(1) >= ID && input.LA(1) <= 10) || (input.LA(1) >= 12 && input.LA(1) <= 49) ) 
            			    	{
            			    	    input.Consume();
            			    	    state.errorRecovery = false;state.failed = false;
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    throw mse;
            			    	}


            			    }
            			    break;

            			default:
            			    goto loop19;
            	    }
            	} while (true);

            	loop19:
            		;	// Stops C# compiler whining that label 'loop19' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "lisIngnore"


    // $ANTLR start "lisIngnorebeing"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:84:1: lisIngnorebeing : (~ ( 'begin' ) )* ;
    public void lisIngnorebeing() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:85:2: ( (~ ( 'begin' ) )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:85:4: (~ ( 'begin' ) )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:85:4: (~ ( 'begin' ) )*
            	do 
            	{
            	    int alt20 = 2;
            	    int LA20_0 = input.LA(1);

            	    if ( (LA20_0 == 12) )
            	    {
            	        int LA20_1 = input.LA(2);

            	        if ( (synpred20_GrammaireZEnu()) )
            	        {
            	            alt20 = 1;
            	        }


            	    }
            	    else if ( ((LA20_0 >= ID && LA20_0 <= COMMENT) || LA20_0 == 11 || (LA20_0 >= 13 && LA20_0 <= 49)) )
            	    {
            	        alt20 = 1;
            	    }


            	    switch (alt20) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:85:5: ~ ( 'begin' )
            			    {
            			    	if ( (input.LA(1) >= ID && input.LA(1) <= COMMENT) || (input.LA(1) >= 11 && input.LA(1) <= 49) ) 
            			    	{
            			    	    input.Consume();
            			    	    state.errorRecovery = false;state.failed = false;
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    throw mse;
            			    	}


            			    }
            			    break;

            			default:
            			    goto loop20;
            	    }
            	} while (true);

            	loop20:
            		;	// Stops C# compiler whining that label 'loop20' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "lisIngnorebeing"


    // $ANTLR start "ps"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:88:1: ps returns [List<VariableDeclare> Vars=new List<VariableDeclare>()] : (s1= s ';' ) ( ( definition )? s2= s ';' )* ;
    public List<VariableDeclare> ps() // throws RecognitionException [1]
    {   
        List<VariableDeclare> Vars = new List<VariableDeclare>();

        GrammaireZEnuParser.s_return s1 = default(GrammaireZEnuParser.s_return);

        GrammaireZEnuParser.s_return s2 = default(GrammaireZEnuParser.s_return);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:89:2: ( (s1= s ';' ) ( ( definition )? s2= s ';' )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:89:4: (s1= s ';' ) ( ( definition )? s2= s ';' )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:89:4: (s1= s ';' )
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:89:5: s1= s ';'
            	{
            		PushFollow(FOLLOW_s_in_ps374);
            		s1 = s();
            		state.followingStackPointer--;
            		if (state.failed) return Vars;
            		if ( (state.backtracking==0) )
            		{
            		  Vars.AddRange(((s1 != null) ? s1.ids : default(List<VariableDeclare>)));
            		}
            		Match(input,12,FOLLOW_12_in_ps410); if (state.failed) return Vars;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:90:4: ( ( definition )? s2= s ';' )*
            	do 
            	{
            	    int alt22 = 2;
            	    int LA22_0 = input.LA(1);

            	    if ( ((LA22_0 >= ID && LA22_0 <= COMMENT) || (LA22_0 >= 11 && LA22_0 <= 49)) )
            	    {
            	        alt22 = 1;
            	    }


            	    switch (alt22) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:90:5: ( definition )? s2= s ';'
            			    {
            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:90:5: ( definition )?
            			    	int alt21 = 2;
            			    	int LA21_0 = input.LA(1);

            			    	if ( ((LA21_0 >= 48 && LA21_0 <= 49)) )
            			    	{
            			    	    int LA21_1 = input.LA(2);

            			    	    if ( (synpred21_GrammaireZEnu()) )
            			    	    {
            			    	        alt21 = 1;
            			    	    }
            			    	}
            			    	switch (alt21) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: definition
            			    	        {
            			    	        	PushFollow(FOLLOW_definition_in_ps418);
            			    	        	definition();
            			    	        	state.followingStackPointer--;
            			    	        	if (state.failed) return Vars;

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_s_in_ps423);
            			    	s2 = s();
            			    	state.followingStackPointer--;
            			    	if (state.failed) return Vars;
            			    	if ( (state.backtracking==0) )
            			    	{
            			    	  Vars.AddRange(((s2 != null) ? s2.ids : default(List<VariableDeclare>)));
            			    	}
            			    	Match(input,12,FOLLOW_12_in_ps447); if (state.failed) return Vars;

            			    }
            			    break;

            			default:
            			    goto loop22;
            	    }
            	} while (true);

            	loop22:
            		;	// Stops C# compiler whining that label 'loop22' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return Vars;
    }
    // $ANTLR end "ps"

    public class s_return : ParserRuleReturnScope
    {
        public List<VariableDeclare> ids=new List<VariableDeclare>();
        public string type;
    };

    // $ANTLR start "s"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:93:1: s returns [List<VariableDeclare> ids=new List<VariableDeclare>(), string type] : ( ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) | lisIngnorebeing );
    public GrammaireZEnuParser.s_return s() // throws RecognitionException [1]
    {   
        GrammaireZEnuParser.s_return retval = new GrammaireZEnuParser.s_return();
        retval.Start = input.LT(1);

        IToken a1 = null;
        IToken f1 = null;
        GrammaireZEnuParser.typ_return t1 = default(GrammaireZEnuParser.typ_return);

        GrammaireZEnuParser.typ_return t2 = default(GrammaireZEnuParser.typ_return);

        List<VariableDeclare> li1 = default(List<VariableDeclare>);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:2: ( ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) | lisIngnorebeing )
            int alt25 = 2;
            alt25 = dfa25.Predict(input);
            switch (alt25) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:4: ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:4: ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:5: li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
                    	{
                    		PushFollow(FOLLOW_li_in_s469);
                    		li1 = li();
                    		state.followingStackPointer--;
                    		if (state.failed) return retval;
                    		if ( (input.LA(1) >= 17 && input.LA(1) <= 19) ) 
                    		{
                    		    input.Consume();
                    		    state.errorRecovery = false;state.failed = false;
                    		}
                    		else 
                    		{
                    		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    		    MismatchedSetException mse = new MismatchedSetException(null,input);
                    		    throw mse;
                    		}

                    		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:25: (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
                    		int alt24 = 2;
                    		int LA24_0 = input.LA(1);

                    		if ( (LA24_0 == 14 || (LA24_0 >= 21 && LA24_0 <= 24) || (LA24_0 >= 26 && LA24_0 <= 28) || LA24_0 == 30 || LA24_0 == 32 || (LA24_0 >= 37 && LA24_0 <= 47)) )
                    		{
                    		    alt24 = 1;
                    		}
                    		else if ( (LA24_0 == 13 || LA24_0 == 16) )
                    		{
                    		    alt24 = 2;
                    		}
                    		else 
                    		{
                    		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    		    NoViableAltException nvae_d24s0 =
                    		        new NoViableAltException("", 24, 0, input);

                    		    throw nvae_d24s0;
                    		}
                    		switch (alt24) 
                    		{
                    		    case 1 :
                    		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:26: t1= typ
                    		        {
                    		        	PushFollow(FOLLOW_typ_in_s482);
                    		        	t1 = typ();
                    		        	state.followingStackPointer--;
                    		        	if (state.failed) return retval;

                    		        }
                    		        break;
                    		    case 2 :
                    		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:35: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
                    		        {
                    		        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:35: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
                    		        	int alt23 = 2;
                    		        	int LA23_0 = input.LA(1);

                    		        	if ( (LA23_0 == 13) )
                    		        	{
                    		        	    alt23 = 1;
                    		        	}
                    		        	else if ( (LA23_0 == 16) )
                    		        	{
                    		        	    alt23 = 2;
                    		        	}
                    		        	else 
                    		        	{
                    		        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    		        	    NoViableAltException nvae_d23s0 =
                    		        	        new NoViableAltException("", 23, 0, input);

                    		        	    throw nvae_d23s0;
                    		        	}
                    		        	switch (alt23) 
                    		        	{
                    		        	    case 1 :
                    		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:36: a1= 'action'
                    		        	        {
                    		        	        	a1=(IToken)Match(input,13,FOLLOW_13_in_s489); if (state.failed) return retval;

                    		        	        }
                    		        	        break;
                    		        	    case 2 :
                    		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:48: f1= 'function' '(' t2= typ ')'
                    		        	        {
                    		        	        	f1=(IToken)Match(input,16,FOLLOW_16_in_s493); if (state.failed) return retval;
                    		        	        	Match(input,14,FOLLOW_14_in_s495); if (state.failed) return retval;
                    		        	        	PushFollow(FOLLOW_typ_in_s499);
                    		        	        	t2 = typ();
                    		        	        	state.followingStackPointer--;
                    		        	        	if (state.failed) return retval;
                    		        	        	Match(input,15,FOLLOW_15_in_s501); if (state.failed) return retval;

                    		        	        }
                    		        	        break;

                    		        	}


                    		        }
                    		        break;

                    		}

                    		if ( (state.backtracking==0) )
                    		{

                    		  	   retval.ids = li1; 
                    		  	   string ty=((t1 != null) ? input.ToString((IToken)(t1.Start),(IToken)(t1.Stop)) : null)+((a1 != null) ? a1.Text : null)+((f1 != null) ? f1.Text : null)+(t2!=null?"("+((t2 != null) ? input.ToString((IToken)(t2.Start),(IToken)(t2.Stop)) : null)+")":null);
                    		  	   foreach(VariableDeclare vd in li1)
                    		  	   	vd.Type=ty;
                    		  	   retval.type = ty;
                    		  	  
                    		}

                    	}


                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:102:5: lisIngnorebeing
                    {
                    	PushFollow(FOLLOW_lisIngnorebeing_in_s517);
                    	lisIngnorebeing();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;

                    }
                    break;

            }
            retval.Stop = input.LT(-1);

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "s"


    // $ANTLR start "li"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:105:1: li returns [List<VariableDeclare> ids=new List<VariableDeclare>()] : i1= ID ( ',' i2= ID )* ;
    public List<VariableDeclare> li() // throws RecognitionException [1]
    {   
        List<VariableDeclare> ids = new List<VariableDeclare>();

        IToken i1 = null;
        IToken i2 = null;

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:106:2: (i1= ID ( ',' i2= ID )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:106:4: i1= ID ( ',' i2= ID )*
            {
            	i1=(IToken)Match(input,ID,FOLLOW_ID_in_li538); if (state.failed) return ids;
            	if ( (state.backtracking==0) )
            	{
            	  ids.Add(new VariableDeclare(i1));
            	}
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:106:47: ( ',' i2= ID )*
            	do 
            	{
            	    int alt26 = 2;
            	    int LA26_0 = input.LA(1);

            	    if ( (LA26_0 == 20) )
            	    {
            	        alt26 = 1;
            	    }


            	    switch (alt26) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:106:49: ',' i2= ID
            			    {
            			    	Match(input,20,FOLLOW_20_in_li545); if (state.failed) return ids;
            			    	i2=(IToken)Match(input,ID,FOLLOW_ID_in_li549); if (state.failed) return ids;
            			    	if ( (state.backtracking==0) )
            			    	{
            			    	  ids.Add(new VariableDeclare(i2));
            			    	}

            			    }
            			    break;

            			default:
            			    goto loop26;
            	    }
            	} while (true);

            	loop26:
            		;	// Stops C# compiler whining that label 'loop26' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ids;
    }
    // $ANTLR end "li"

    public class typ_return : ParserRuleReturnScope
    {
    };

    // $ANTLR start "typ"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:109:1: typ : ( types | 'machine_car' | 'machine_nombre' | structure | ( ( 'pointer' | 'pointers' ) 'to' ( sep )? )? ( 'list' | 'lists' | 'bst' ) ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )? | 'array' '(' lc ')' ( ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' ) )* | 'vector' '(' CSTE ')' ( ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' ) )* );
    public GrammaireZEnuParser.typ_return typ() // throws RecognitionException [1]
    {   
        GrammaireZEnuParser.typ_return retval = new GrammaireZEnuParser.typ_return();
        retval.Start = input.LT(1);

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:110:2: ( types | 'machine_car' | 'machine_nombre' | structure | ( ( 'pointer' | 'pointers' ) 'to' ( sep )? )? ( 'list' | 'lists' | 'bst' ) ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )? | 'array' '(' lc ')' ( ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' ) )* | 'vector' '(' CSTE ')' ( ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' ) )* )
            int alt44 = 7;
            switch ( input.LA(1) ) 
            {
            case 28:
            	{
                int LA44_1 = input.LA(2);

                if ( (synpred29_GrammaireZEnu()) )
                {
                    alt44 = 1;
                }
                else if ( (synpred48_GrammaireZEnu()) )
                {
                    alt44 = 5;
                }
                else 
                {
                    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    NoViableAltException nvae_d44s1 =
                        new NoViableAltException("", 44, 1, input);

                    throw nvae_d44s1;
                }
                }
                break;
            case 21:
            	{
                alt44 = 2;
                }
                break;
            case 22:
            	{
                alt44 = 3;
                }
                break;
            case 14:
            case 37:
            	{
                alt44 = 4;
                }
                break;
            case 23:
            case 24:
            case 26:
            case 27:
            	{
                alt44 = 5;
                }
                break;
            case 38:
            case 39:
            case 40:
            case 41:
            case 42:
            case 43:
            case 44:
            case 45:
            case 46:
            case 47:
            	{
                alt44 = 1;
                }
                break;
            case 30:
            	{
                alt44 = 6;
                }
                break;
            case 32:
            	{
                alt44 = 7;
                }
                break;
            	default:
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d44s0 =
            	        new NoViableAltException("", 44, 0, input);

            	    throw nvae_d44s0;
            }

            switch (alt44) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:110:4: types
                    {
                    	PushFollow(FOLLOW_types_in_typ569);
                    	types();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;

                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:111:4: 'machine_car'
                    {
                    	Match(input,21,FOLLOW_21_in_typ574); if (state.failed) return retval;

                    }
                    break;
                case 3 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:112:4: 'machine_nombre'
                    {
                    	Match(input,22,FOLLOW_22_in_typ580); if (state.failed) return retval;

                    }
                    break;
                case 4 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:113:4: structure
                    {
                    	PushFollow(FOLLOW_structure_in_typ586);
                    	structure();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;

                    }
                    break;
                case 5 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:4: ( ( 'pointer' | 'pointers' ) 'to' ( sep )? )? ( 'list' | 'lists' | 'bst' ) ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )?
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:4: ( ( 'pointer' | 'pointers' ) 'to' ( sep )? )?
                    	int alt28 = 2;
                    	int LA28_0 = input.LA(1);

                    	if ( ((LA28_0 >= 23 && LA28_0 <= 24)) )
                    	{
                    	    alt28 = 1;
                    	}
                    	switch (alt28) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:5: ( 'pointer' | 'pointers' ) 'to' ( sep )?
                    	        {
                    	        	if ( (input.LA(1) >= 23 && input.LA(1) <= 24) ) 
                    	        	{
                    	        	    input.Consume();
                    	        	    state.errorRecovery = false;state.failed = false;
                    	        	}
                    	        	else 
                    	        	{
                    	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    	        	    throw mse;
                    	        	}

                    	        	Match(input,25,FOLLOW_25_in_typ599); if (state.failed) return retval;
                    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:33: ( sep )?
                    	        	int alt27 = 2;
                    	        	int LA27_0 = input.LA(1);

                    	        	if ( ((LA27_0 >= 17 && LA27_0 <= 19)) )
                    	        	{
                    	        	    alt27 = 1;
                    	        	}
                    	        	switch (alt27) 
                    	        	{
                    	        	    case 1 :
                    	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: sep
                    	        	        {
                    	        	        	PushFollow(FOLLOW_sep_in_typ601);
                    	        	        	sep();
                    	        	        	state.followingStackPointer--;
                    	        	        	if (state.failed) return retval;

                    	        	        }
                    	        	        break;

                    	        	}


                    	        }
                    	        break;

                    	}

                    	if ( (input.LA(1) >= 26 && input.LA(1) <= 28) ) 
                    	{
                    	    input.Consume();
                    	    state.errorRecovery = false;state.failed = false;
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    	    throw mse;
                    	}

                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:64: ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )?
                    	int alt37 = 2;
                    	alt37 = dfa37.Predict(input);
                    	switch (alt37) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:66: 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' )
                    	        {
                    	        	Match(input,29,FOLLOW_29_in_typ617); if (state.failed) return retval;
                    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:71: ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' )
                    	        	int alt36 = 3;
                    	        	switch ( input.LA(1) ) 
                    	        	{
                    	        	case 14:
                    	        	case 28:
                    	        	case 37:
                    	        	case 38:
                    	        	case 39:
                    	        	case 40:
                    	        	case 41:
                    	        	case 42:
                    	        	case 43:
                    	        	case 44:
                    	        	case 45:
                    	        	case 46:
                    	        	case 47:
                    	        		{
                    	        	    alt36 = 1;
                    	        	    }
                    	        	    break;
                    	        	case 30:
                    	        		{
                    	        	    alt36 = 2;
                    	        	    }
                    	        	    break;
                    	        	case 31:
                    	        		{
                    	        	    alt36 = 3;
                    	        	    }
                    	        	    break;
                    	        		default:
                    	        		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        		    NoViableAltException nvae_d36s0 =
                    	        		        new NoViableAltException("", 36, 0, input);

                    	        		    throw nvae_d36s0;
                    	        	}

                    	        	switch (alt36) 
                    	        	{
                    	        	    case 1 :
                    	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:72: ( types | structure )
                    	        	        {
                    	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:72: ( types | structure )
                    	        	        	int alt29 = 2;
                    	        	        	int LA29_0 = input.LA(1);

                    	        	        	if ( (LA29_0 == 28 || (LA29_0 >= 38 && LA29_0 <= 47)) )
                    	        	        	{
                    	        	        	    alt29 = 1;
                    	        	        	}
                    	        	        	else if ( (LA29_0 == 14 || LA29_0 == 37) )
                    	        	        	{
                    	        	        	    alt29 = 2;
                    	        	        	}
                    	        	        	else 
                    	        	        	{
                    	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        	        	    NoViableAltException nvae_d29s0 =
                    	        	        	        new NoViableAltException("", 29, 0, input);

                    	        	        	    throw nvae_d29s0;
                    	        	        	}
                    	        	        	switch (alt29) 
                    	        	        	{
                    	        	        	    case 1 :
                    	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:73: types
                    	        	        	        {
                    	        	        	        	PushFollow(FOLLOW_types_in_typ621);
                    	        	        	        	types();
                    	        	        	        	state.followingStackPointer--;
                    	        	        	        	if (state.failed) return retval;

                    	        	        	        }
                    	        	        	        break;
                    	        	        	    case 2 :
                    	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:81: structure
                    	        	        	        {
                    	        	        	        	PushFollow(FOLLOW_structure_in_typ625);
                    	        	        	        	structure();
                    	        	        	        	state.followingStackPointer--;
                    	        	        	        	if (state.failed) return retval;

                    	        	        	        }
                    	        	        	        break;

                    	        	        	}


                    	        	        }
                    	        	        break;
                    	        	    case 2 :
                    	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:94: 'array' '(' lc ')' ( 'of' ( structure | types ) )?
                    	        	        {
                    	        	        	Match(input,30,FOLLOW_30_in_typ630); if (state.failed) return retval;
                    	        	        	Match(input,14,FOLLOW_14_in_typ632); if (state.failed) return retval;
                    	        	        	PushFollow(FOLLOW_lc_in_typ634);
                    	        	        	lc();
                    	        	        	state.followingStackPointer--;
                    	        	        	if (state.failed) return retval;
                    	        	        	Match(input,15,FOLLOW_15_in_typ636); if (state.failed) return retval;
                    	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:113: ( 'of' ( structure | types ) )?
                    	        	        	int alt31 = 2;
                    	        	        	alt31 = dfa31.Predict(input);
                    	        	        	switch (alt31) 
                    	        	        	{
                    	        	        	    case 1 :
                    	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:114: 'of' ( structure | types )
                    	        	        	        {
                    	        	        	        	Match(input,29,FOLLOW_29_in_typ639); if (state.failed) return retval;
                    	        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:118: ( structure | types )
                    	        	        	        	int alt30 = 2;
                    	        	        	        	int LA30_0 = input.LA(1);

                    	        	        	        	if ( (LA30_0 == 14 || LA30_0 == 37) )
                    	        	        	        	{
                    	        	        	        	    alt30 = 1;
                    	        	        	        	}
                    	        	        	        	else if ( (LA30_0 == 28 || (LA30_0 >= 38 && LA30_0 <= 47)) )
                    	        	        	        	{
                    	        	        	        	    alt30 = 2;
                    	        	        	        	}
                    	        	        	        	else 
                    	        	        	        	{
                    	        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        	        	        	    NoViableAltException nvae_d30s0 =
                    	        	        	        	        new NoViableAltException("", 30, 0, input);

                    	        	        	        	    throw nvae_d30s0;
                    	        	        	        	}
                    	        	        	        	switch (alt30) 
                    	        	        	        	{
                    	        	        	        	    case 1 :
                    	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:119: structure
                    	        	        	        	        {
                    	        	        	        	        	PushFollow(FOLLOW_structure_in_typ641);
                    	        	        	        	        	structure();
                    	        	        	        	        	state.followingStackPointer--;
                    	        	        	        	        	if (state.failed) return retval;

                    	        	        	        	        }
                    	        	        	        	        break;
                    	        	        	        	    case 2 :
                    	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:131: types
                    	        	        	        	        {
                    	        	        	        	        	PushFollow(FOLLOW_types_in_typ645);
                    	        	        	        	        	types();
                    	        	        	        	        	state.followingStackPointer--;
                    	        	        	        	        	if (state.failed) return retval;

                    	        	        	        	        }
                    	        	        	        	        break;

                    	        	        	        	}


                    	        	        	        }
                    	        	        	        break;

                    	        	        	}


                    	        	        }
                    	        	        break;
                    	        	    case 3 :
                    	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:143: 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')'
                    	        	        {
                    	        	        	Match(input,31,FOLLOW_31_in_typ653); if (state.failed) return retval;
                    	        	        	Match(input,29,FOLLOW_29_in_typ655); if (state.failed) return retval;
                    	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:156: ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) )
                    	        	        	int alt33 = 2;
                    	        	        	int LA33_0 = input.LA(1);

                    	        	        	if ( (LA33_0 == 28 || (LA33_0 >= 38 && LA33_0 <= 47)) )
                    	        	        	{
                    	        	        	    alt33 = 1;
                    	        	        	}
                    	        	        	else if ( (LA33_0 == 32) )
                    	        	        	{
                    	        	        	    alt33 = 2;
                    	        	        	}
                    	        	        	else 
                    	        	        	{
                    	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        	        	    NoViableAltException nvae_d33s0 =
                    	        	        	        new NoViableAltException("", 33, 0, input);

                    	        	        	    throw nvae_d33s0;
                    	        	        	}
                    	        	        	switch (alt33) 
                    	        	        	{
                    	        	        	    case 1 :
                    	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:158: types
                    	        	        	        {
                    	        	        	        	PushFollow(FOLLOW_types_in_typ659);
                    	        	        	        	types();
                    	        	        	        	state.followingStackPointer--;
                    	        	        	        	if (state.failed) return retval;

                    	        	        	        }
                    	        	        	        break;
                    	        	        	    case 2 :
                    	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:166: 'vector' '(' CSTE ')' 'of' ( types | structure )
                    	        	        	        {
                    	        	        	        	Match(input,32,FOLLOW_32_in_typ663); if (state.failed) return retval;
                    	        	        	        	Match(input,14,FOLLOW_14_in_typ665); if (state.failed) return retval;
                    	        	        	        	Match(input,CSTE,FOLLOW_CSTE_in_typ667); if (state.failed) return retval;
                    	        	        	        	Match(input,15,FOLLOW_15_in_typ669); if (state.failed) return retval;
                    	        	        	        	Match(input,29,FOLLOW_29_in_typ671); if (state.failed) return retval;
                    	        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:193: ( types | structure )
                    	        	        	        	int alt32 = 2;
                    	        	        	        	int LA32_0 = input.LA(1);

                    	        	        	        	if ( (LA32_0 == 28 || (LA32_0 >= 38 && LA32_0 <= 47)) )
                    	        	        	        	{
                    	        	        	        	    alt32 = 1;
                    	        	        	        	}
                    	        	        	        	else if ( (LA32_0 == 14 || LA32_0 == 37) )
                    	        	        	        	{
                    	        	        	        	    alt32 = 2;
                    	        	        	        	}
                    	        	        	        	else 
                    	        	        	        	{
                    	        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        	        	        	    NoViableAltException nvae_d32s0 =
                    	        	        	        	        new NoViableAltException("", 32, 0, input);

                    	        	        	        	    throw nvae_d32s0;
                    	        	        	        	}
                    	        	        	        	switch (alt32) 
                    	        	        	        	{
                    	        	        	        	    case 1 :
                    	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:194: types
                    	        	        	        	        {
                    	        	        	        	        	PushFollow(FOLLOW_types_in_typ674);
                    	        	        	        	        	types();
                    	        	        	        	        	state.followingStackPointer--;
                    	        	        	        	        	if (state.failed) return retval;

                    	        	        	        	        }
                    	        	        	        	        break;
                    	        	        	        	    case 2 :
                    	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:203: structure
                    	        	        	        	        {
                    	        	        	        	        	PushFollow(FOLLOW_structure_in_typ679);
                    	        	        	        	        	structure();
                    	        	        	        	        	state.followingStackPointer--;
                    	        	        	        	        	if (state.failed) return retval;

                    	        	        	        	        }
                    	        	        	        	        break;

                    	        	        	        	}


                    	        	        	        }
                    	        	        	        break;

                    	        	        	}

                    	        	        	Match(input,33,FOLLOW_33_in_typ684); if (state.failed) return retval;
                    	        	        	PushFollow(FOLLOW_li_in_typ686);
                    	        	        	li();
                    	        	        	state.followingStackPointer--;
                    	        	        	if (state.failed) return retval;
                    	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:228: ( 'header' )?
                    	        	        	int alt34 = 2;
                    	        	        	int LA34_0 = input.LA(1);

                    	        	        	if ( (LA34_0 == 34) )
                    	        	        	{
                    	        	        	    alt34 = 1;
                    	        	        	}
                    	        	        	switch (alt34) 
                    	        	        	{
                    	        	        	    case 1 :
                    	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:229: 'header'
                    	        	        	        {
                    	        	        	        	Match(input,34,FOLLOW_34_in_typ689); if (state.failed) return retval;

                    	        	        	        }
                    	        	        	        break;

                    	        	        	}

                    	        	        	Match(input,14,FOLLOW_14_in_typ693); if (state.failed) return retval;
                    	        	        	PushFollow(FOLLOW_types_in_typ695);
                    	        	        	types();
                    	        	        	state.followingStackPointer--;
                    	        	        	if (state.failed) return retval;
                    	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:250: ( ',' types )*
                    	        	        	do 
                    	        	        	{
                    	        	        	    int alt35 = 2;
                    	        	        	    int LA35_0 = input.LA(1);

                    	        	        	    if ( (LA35_0 == 20) )
                    	        	        	    {
                    	        	        	        alt35 = 1;
                    	        	        	    }


                    	        	        	    switch (alt35) 
                    	        	        		{
                    	        	        			case 1 :
                    	        	        			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:251: ',' types
                    	        	        			    {
                    	        	        			    	Match(input,20,FOLLOW_20_in_typ698); if (state.failed) return retval;
                    	        	        			    	PushFollow(FOLLOW_types_in_typ700);
                    	        	        			    	types();
                    	        	        			    	state.followingStackPointer--;
                    	        	        			    	if (state.failed) return retval;

                    	        	        			    }
                    	        	        			    break;

                    	        	        			default:
                    	        	        			    goto loop35;
                    	        	        	    }
                    	        	        	} while (true);

                    	        	        	loop35:
                    	        	        		;	// Stops C# compiler whining that label 'loop35' has no statements

                    	        	        	Match(input,15,FOLLOW_15_in_typ705); if (state.failed) return retval;

                    	        	        }
                    	        	        break;

                    	        	}


                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 6 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:4: 'array' '(' lc ')' ( ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' ) )*
                    {
                    	Match(input,30,FOLLOW_30_in_typ713); if (state.failed) return retval;
                    	Match(input,14,FOLLOW_14_in_typ715); if (state.failed) return retval;
                    	PushFollow(FOLLOW_lc_in_typ717);
                    	lc();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	Match(input,15,FOLLOW_15_in_typ719); if (state.failed) return retval;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:23: ( ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' ) )*
                    	do 
                    	{
                    	    int alt40 = 2;
                    	    alt40 = dfa40.Predict(input);
                    	    switch (alt40) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:24: ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' )
                    			    {
                    			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:24: ( 'of' )?
                    			    	int alt38 = 2;
                    			    	int LA38_0 = input.LA(1);

                    			    	if ( (LA38_0 == 29) )
                    			    	{
                    			    	    alt38 = 1;
                    			    	}
                    			    	switch (alt38) 
                    			    	{
                    			    	    case 1 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: 'of'
                    			    	        {
                    			    	        	Match(input,29,FOLLOW_29_in_typ722); if (state.failed) return retval;

                    			    	        }
                    			    	        break;

                    			    	}

                    			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:29: ( structure | types | 'dynamic' | 'dynamics' )
                    			    	int alt39 = 4;
                    			    	switch ( input.LA(1) ) 
                    			    	{
                    			    	case 14:
                    			    	case 37:
                    			    		{
                    			    	    alt39 = 1;
                    			    	    }
                    			    	    break;
                    			    	case 28:
                    			    	case 38:
                    			    	case 39:
                    			    	case 40:
                    			    	case 41:
                    			    	case 42:
                    			    	case 43:
                    			    	case 44:
                    			    	case 45:
                    			    	case 46:
                    			    	case 47:
                    			    		{
                    			    	    alt39 = 2;
                    			    	    }
                    			    	    break;
                    			    	case 35:
                    			    		{
                    			    	    alt39 = 3;
                    			    	    }
                    			    	    break;
                    			    	case 36:
                    			    		{
                    			    	    alt39 = 4;
                    			    	    }
                    			    	    break;
                    			    		default:
                    			    		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    			    		    NoViableAltException nvae_d39s0 =
                    			    		        new NoViableAltException("", 39, 0, input);

                    			    		    throw nvae_d39s0;
                    			    	}

                    			    	switch (alt39) 
                    			    	{
                    			    	    case 1 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:30: structure
                    			    	        {
                    			    	        	PushFollow(FOLLOW_structure_in_typ725);
                    			    	        	structure();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return retval;

                    			    	        }
                    			    	        break;
                    			    	    case 2 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:42: types
                    			    	        {
                    			    	        	PushFollow(FOLLOW_types_in_typ729);
                    			    	        	types();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return retval;

                    			    	        }
                    			    	        break;
                    			    	    case 3 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:50: 'dynamic'
                    			    	        {
                    			    	        	Match(input,35,FOLLOW_35_in_typ733); if (state.failed) return retval;

                    			    	        }
                    			    	        break;
                    			    	    case 4 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:62: 'dynamics'
                    			    	        {
                    			    	        	Match(input,36,FOLLOW_36_in_typ737); if (state.failed) return retval;

                    			    	        }
                    			    	        break;

                    			    	}


                    			    }
                    			    break;

                    			default:
                    			    goto loop40;
                    	    }
                    	} while (true);

                    	loop40:
                    		;	// Stops C# compiler whining that label 'loop40' has no statements


                    }
                    break;
                case 7 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:4: 'vector' '(' CSTE ')' ( ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' ) )*
                    {
                    	Match(input,32,FOLLOW_32_in_typ746); if (state.failed) return retval;
                    	Match(input,14,FOLLOW_14_in_typ748); if (state.failed) return retval;
                    	Match(input,CSTE,FOLLOW_CSTE_in_typ750); if (state.failed) return retval;
                    	Match(input,15,FOLLOW_15_in_typ752); if (state.failed) return retval;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:26: ( ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' ) )*
                    	do 
                    	{
                    	    int alt43 = 2;
                    	    alt43 = dfa43.Predict(input);
                    	    switch (alt43) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:27: ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' )
                    			    {
                    			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:27: ( 'of' )?
                    			    	int alt41 = 2;
                    			    	int LA41_0 = input.LA(1);

                    			    	if ( (LA41_0 == 29) )
                    			    	{
                    			    	    alt41 = 1;
                    			    	}
                    			    	switch (alt41) 
                    			    	{
                    			    	    case 1 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: 'of'
                    			    	        {
                    			    	        	Match(input,29,FOLLOW_29_in_typ755); if (state.failed) return retval;

                    			    	        }
                    			    	        break;

                    			    	}

                    			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:33: ( types | structure | 'dynamic' | 'dynamics' )
                    			    	int alt42 = 4;
                    			    	switch ( input.LA(1) ) 
                    			    	{
                    			    	case 28:
                    			    	case 38:
                    			    	case 39:
                    			    	case 40:
                    			    	case 41:
                    			    	case 42:
                    			    	case 43:
                    			    	case 44:
                    			    	case 45:
                    			    	case 46:
                    			    	case 47:
                    			    		{
                    			    	    alt42 = 1;
                    			    	    }
                    			    	    break;
                    			    	case 14:
                    			    	case 37:
                    			    		{
                    			    	    alt42 = 2;
                    			    	    }
                    			    	    break;
                    			    	case 35:
                    			    		{
                    			    	    alt42 = 3;
                    			    	    }
                    			    	    break;
                    			    	case 36:
                    			    		{
                    			    	    alt42 = 4;
                    			    	    }
                    			    	    break;
                    			    		default:
                    			    		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    			    		    NoViableAltException nvae_d42s0 =
                    			    		        new NoViableAltException("", 42, 0, input);

                    			    		    throw nvae_d42s0;
                    			    	}

                    			    	switch (alt42) 
                    			    	{
                    			    	    case 1 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:34: types
                    			    	        {
                    			    	        	PushFollow(FOLLOW_types_in_typ759);
                    			    	        	types();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return retval;

                    			    	        }
                    			    	        break;
                    			    	    case 2 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:43: structure
                    			    	        {
                    			    	        	PushFollow(FOLLOW_structure_in_typ764);
                    			    	        	structure();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return retval;

                    			    	        }
                    			    	        break;
                    			    	    case 3 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:55: 'dynamic'
                    			    	        {
                    			    	        	Match(input,35,FOLLOW_35_in_typ768); if (state.failed) return retval;

                    			    	        }
                    			    	        break;
                    			    	    case 4 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:67: 'dynamics'
                    			    	        {
                    			    	        	Match(input,36,FOLLOW_36_in_typ772); if (state.failed) return retval;

                    			    	        }
                    			    	        break;

                    			    	}


                    			    }
                    			    break;

                    			default:
                    			    goto loop43;
                    	    }
                    	} while (true);

                    	loop43:
                    		;	// Stops C# compiler whining that label 'loop43' has no statements


                    }
                    break;

            }
            retval.Stop = input.LT(-1);

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "typ"


    // $ANTLR start "structure"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:119:1: structure : ( ( ( 'structure' )? '(' ( types ) ( ',' types )* ')' )=> ( 'structure' )? '(' types ( ',' types )* ')' | ( 'structure' )? '(' ( types | 'vector' '(' CSTE ')' 'of' types ) ( ',' ( types | 'vector' '(' CSTE ')' 'of' types ) )* ')' );
    public void structure() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:2: ( ( ( 'structure' )? '(' ( types ) ( ',' types )* ')' )=> ( 'structure' )? '(' types ( ',' types )* ')' | ( 'structure' )? '(' ( types | 'vector' '(' CSTE ')' 'of' types ) ( ',' ( types | 'vector' '(' CSTE ')' 'of' types ) )* ')' )
            int alt51 = 2;
            alt51 = dfa51.Predict(input);
            switch (alt51) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:4: ( ( 'structure' )? '(' ( types ) ( ',' types )* ')' )=> ( 'structure' )? '(' types ( ',' types )* ')'
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:53: ( 'structure' )?
                    	int alt45 = 2;
                    	int LA45_0 = input.LA(1);

                    	if ( (LA45_0 == 37) )
                    	{
                    	    alt45 = 1;
                    	}
                    	switch (alt45) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:54: 'structure'
                    	        {
                    	        	Match(input,37,FOLLOW_37_in_structure813); if (state.failed) return ;

                    	        }
                    	        break;

                    	}

                    	Match(input,14,FOLLOW_14_in_structure817); if (state.failed) return ;
                    	PushFollow(FOLLOW_types_in_structure819);
                    	types();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:78: ( ',' types )*
                    	do 
                    	{
                    	    int alt46 = 2;
                    	    int LA46_0 = input.LA(1);

                    	    if ( (LA46_0 == 20) )
                    	    {
                    	        alt46 = 1;
                    	    }


                    	    switch (alt46) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:79: ',' types
                    			    {
                    			    	Match(input,20,FOLLOW_20_in_structure822); if (state.failed) return ;
                    			    	PushFollow(FOLLOW_types_in_structure824);
                    			    	types();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return ;

                    			    }
                    			    break;

                    			default:
                    			    goto loop46;
                    	    }
                    	} while (true);

                    	loop46:
                    		;	// Stops C# compiler whining that label 'loop46' has no statements

                    	Match(input,15,FOLLOW_15_in_structure830); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:4: ( 'structure' )? '(' ( types | 'vector' '(' CSTE ')' 'of' types ) ( ',' ( types | 'vector' '(' CSTE ')' 'of' types ) )* ')'
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:4: ( 'structure' )?
                    	int alt47 = 2;
                    	int LA47_0 = input.LA(1);

                    	if ( (LA47_0 == 37) )
                    	{
                    	    alt47 = 1;
                    	}
                    	switch (alt47) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:5: 'structure'
                    	        {
                    	        	Match(input,37,FOLLOW_37_in_structure838); if (state.failed) return ;

                    	        }
                    	        break;

                    	}

                    	Match(input,14,FOLLOW_14_in_structure842); if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:23: ( types | 'vector' '(' CSTE ')' 'of' types )
                    	int alt48 = 2;
                    	int LA48_0 = input.LA(1);

                    	if ( (LA48_0 == 28 || (LA48_0 >= 38 && LA48_0 <= 47)) )
                    	{
                    	    alt48 = 1;
                    	}
                    	else if ( (LA48_0 == 32) )
                    	{
                    	    alt48 = 2;
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    	    NoViableAltException nvae_d48s0 =
                    	        new NoViableAltException("", 48, 0, input);

                    	    throw nvae_d48s0;
                    	}
                    	switch (alt48) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:24: types
                    	        {
                    	        	PushFollow(FOLLOW_types_in_structure845);
                    	        	types();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return ;

                    	        }
                    	        break;
                    	    case 2 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:32: 'vector' '(' CSTE ')' 'of' types
                    	        {
                    	        	Match(input,32,FOLLOW_32_in_structure849); if (state.failed) return ;
                    	        	Match(input,14,FOLLOW_14_in_structure851); if (state.failed) return ;
                    	        	Match(input,CSTE,FOLLOW_CSTE_in_structure853); if (state.failed) return ;
                    	        	Match(input,15,FOLLOW_15_in_structure855); if (state.failed) return ;
                    	        	Match(input,29,FOLLOW_29_in_structure857); if (state.failed) return ;
                    	        	PushFollow(FOLLOW_types_in_structure859);
                    	        	types();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return ;

                    	        }
                    	        break;

                    	}

                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:67: ( ',' ( types | 'vector' '(' CSTE ')' 'of' types ) )*
                    	do 
                    	{
                    	    int alt50 = 2;
                    	    int LA50_0 = input.LA(1);

                    	    if ( (LA50_0 == 20) )
                    	    {
                    	        alt50 = 1;
                    	    }


                    	    switch (alt50) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:68: ',' ( types | 'vector' '(' CSTE ')' 'of' types )
                    			    {
                    			    	Match(input,20,FOLLOW_20_in_structure864); if (state.failed) return ;
                    			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:72: ( types | 'vector' '(' CSTE ')' 'of' types )
                    			    	int alt49 = 2;
                    			    	int LA49_0 = input.LA(1);

                    			    	if ( (LA49_0 == 28 || (LA49_0 >= 38 && LA49_0 <= 47)) )
                    			    	{
                    			    	    alt49 = 1;
                    			    	}
                    			    	else if ( (LA49_0 == 32) )
                    			    	{
                    			    	    alt49 = 2;
                    			    	}
                    			    	else 
                    			    	{
                    			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    			    	    NoViableAltException nvae_d49s0 =
                    			    	        new NoViableAltException("", 49, 0, input);

                    			    	    throw nvae_d49s0;
                    			    	}
                    			    	switch (alt49) 
                    			    	{
                    			    	    case 1 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:74: types
                    			    	        {
                    			    	        	PushFollow(FOLLOW_types_in_structure868);
                    			    	        	types();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return ;

                    			    	        }
                    			    	        break;
                    			    	    case 2 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:121:82: 'vector' '(' CSTE ')' 'of' types
                    			    	        {
                    			    	        	Match(input,32,FOLLOW_32_in_structure872); if (state.failed) return ;
                    			    	        	Match(input,14,FOLLOW_14_in_structure874); if (state.failed) return ;
                    			    	        	Match(input,CSTE,FOLLOW_CSTE_in_structure876); if (state.failed) return ;
                    			    	        	Match(input,15,FOLLOW_15_in_structure878); if (state.failed) return ;
                    			    	        	Match(input,29,FOLLOW_29_in_structure880); if (state.failed) return ;
                    			    	        	PushFollow(FOLLOW_types_in_structure882);
                    			    	        	types();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return ;

                    			    	        }
                    			    	        break;

                    			    	}


                    			    }
                    			    break;

                    			default:
                    			    goto loop50;
                    	    }
                    	} while (true);

                    	loop50:
                    		;	// Stops C# compiler whining that label 'loop50' has no statements

                    	Match(input,15,FOLLOW_15_in_structure889); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "structure"


    // $ANTLR start "lc"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:124:1: lc : CSTE ( ',' CSTE )* ;
    public void lc() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:125:2: ( CSTE ( ',' CSTE )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:125:4: CSTE ( ',' CSTE )*
            {
            	Match(input,CSTE,FOLLOW_CSTE_in_lc902); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:125:9: ( ',' CSTE )*
            	do 
            	{
            	    int alt52 = 2;
            	    int LA52_0 = input.LA(1);

            	    if ( (LA52_0 == 20) )
            	    {
            	        alt52 = 1;
            	    }


            	    switch (alt52) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:125:10: ',' CSTE
            			    {
            			    	Match(input,20,FOLLOW_20_in_lc905); if (state.failed) return ;
            			    	Match(input,CSTE,FOLLOW_CSTE_in_lc907); if (state.failed) return ;

            			    }
            			    break;

            			default:
            			    goto loop52;
            	    }
            	} while (true);

            	loop52:
            		;	// Stops C# compiler whining that label 'loop52' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "lc"


    // $ANTLR start "sep"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:128:1: sep : ( ':' | 'a' | 'some' );
    public void sep() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:129:2: ( ':' | 'a' | 'some' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:
            {
            	if ( (input.LA(1) >= 17 && input.LA(1) <= 19) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "sep"


    // $ANTLR start "types"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:134:1: types : ( 'integer' | 'integers' | 'boolean' | 'booleans' | 'char' | 'chars' | 'string' | 'strings' | 'bst' | 'stack' | 'stacks' );
    public void types() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:135:2: ( 'integer' | 'integers' | 'boolean' | 'booleans' | 'char' | 'chars' | 'string' | 'strings' | 'bst' | 'stack' | 'stacks' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:
            {
            	if ( input.LA(1) == 28 || (input.LA(1) >= 38 && input.LA(1) <= 47) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "types"

    public class definition_return : ParserRuleReturnScope
    {
    };

    // $ANTLR start "definition"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:148:1: definition : ( 'definition' | 'definitions' );
    public GrammaireZEnuParser.definition_return definition() // throws RecognitionException [1]
    {   
        GrammaireZEnuParser.definition_return retval = new GrammaireZEnuParser.definition_return();
        retval.Start = input.LT(1);

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:149:2: ( 'definition' | 'definitions' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:
            {
            	if ( (input.LA(1) >= 48 && input.LA(1) <= 49) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

            retval.Stop = input.LT(-1);

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "definition"

    // $ANTLR start "synpred6_GrammaireZEnu"
    public void synpred6_GrammaireZEnu_fragment() {
        IToken id = null;

        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:17: (id= ID )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:17: id= ID
        {
        	id=(IToken)Match(input,ID,FOLLOW_ID_in_synpred6_GrammaireZEnu176); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred6_GrammaireZEnu"

    // $ANTLR start "synpred8_GrammaireZEnu"
    public void synpred8_GrammaireZEnu_fragment() {
        List<VariableDeclare> i = default(List<VariableDeclare>);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:25: ( '(' (i= li )? ')' )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:25: '(' (i= li )? ')'
        {
        	Match(input,14,FOLLOW_14_in_synpred8_GrammaireZEnu182); if (state.failed) return ;
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:30: (i= li )?
        	int alt55 = 2;
        	int LA55_0 = input.LA(1);

        	if ( (LA55_0 == ID) )
        	{
        	    alt55 = 1;
        	}
        	switch (alt55) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: i= li
        	        {
        	        	PushFollow(FOLLOW_li_in_synpred8_GrammaireZEnu186);
        	        	i = li();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}

        	Match(input,15,FOLLOW_15_in_synpred8_GrammaireZEnu189); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred8_GrammaireZEnu"

    // $ANTLR start "synpred9_GrammaireZEnu"
    public void synpred9_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:43: ( ';' )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:43: ';'
        {
        	Match(input,12,FOLLOW_12_in_synpred9_GrammaireZEnu195); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred9_GrammaireZEnu"

    // $ANTLR start "synpred10_GrammaireZEnu"
    public void synpred10_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:50: ( definition )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:50: definition
        {
        	PushFollow(FOLLOW_definition_in_synpred10_GrammaireZEnu200);
        	definition();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred10_GrammaireZEnu"

    // $ANTLR start "synpred12_GrammaireZEnu"
    public void synpred12_GrammaireZEnu_fragment() {
        List<VariableDeclare> p = default(List<VariableDeclare>);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:50: ( ( definition )? (p= ps )? )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:50: ( definition )? (p= ps )?
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:50: ( definition )?
        	int alt56 = 2;
        	int LA56_0 = input.LA(1);

        	if ( ((LA56_0 >= 48 && LA56_0 <= 49)) )
        	{
        	    int LA56_1 = input.LA(2);

        	    if ( (synpred10_GrammaireZEnu()) )
        	    {
        	        alt56 = 1;
        	    }
        	}
        	switch (alt56) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: definition
        	        {
        	        	PushFollow(FOLLOW_definition_in_synpred12_GrammaireZEnu200);
        	        	definition();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:45:63: (p= ps )?
        	int alt57 = 2;
        	int LA57_0 = input.LA(1);

        	if ( ((LA57_0 >= ID && LA57_0 <= COMMENT) || (LA57_0 >= 11 && LA57_0 <= 49)) )
        	{
        	    alt57 = 1;
        	}
        	switch (alt57) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: p= ps
        	        {
        	        	PushFollow(FOLLOW_ps_in_synpred12_GrammaireZEnu205);
        	        	p = ps();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred12_GrammaireZEnu"

    // $ANTLR start "synpred15_GrammaireZEnu"
    public void synpred15_GrammaireZEnu_fragment() {
        GrammaireZEnuParser.typ_return ta = default(GrammaireZEnuParser.typ_return);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:44: (ta= typ )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:44: ta= typ
        {
        	PushFollow(FOLLOW_typ_in_synpred15_GrammaireZEnu271);
        	ta = typ();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred15_GrammaireZEnu"

    // $ANTLR start "synpred16_GrammaireZEnu"
    public void synpred16_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:52: ( definition )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:52: definition
        {
        	PushFollow(FOLLOW_definition_in_synpred16_GrammaireZEnu276);
        	definition();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred16_GrammaireZEnu"

    // $ANTLR start "synpred18_GrammaireZEnu"
    public void synpred18_GrammaireZEnu_fragment() {
        List<VariableDeclare> p = default(List<VariableDeclare>);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:52: ( ( definition )? (p= ps )? )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:52: ( definition )? (p= ps )?
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:52: ( definition )?
        	int alt58 = 2;
        	int LA58_0 = input.LA(1);

        	if ( ((LA58_0 >= 48 && LA58_0 <= 49)) )
        	{
        	    int LA58_1 = input.LA(2);

        	    if ( (synpred16_GrammaireZEnu()) )
        	    {
        	        alt58 = 1;
        	    }
        	}
        	switch (alt58) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: definition
        	        {
        	        	PushFollow(FOLLOW_definition_in_synpred18_GrammaireZEnu276);
        	        	definition();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:63:65: (p= ps )?
        	int alt59 = 2;
        	int LA59_0 = input.LA(1);

        	if ( ((LA59_0 >= ID && LA59_0 <= COMMENT) || (LA59_0 >= 11 && LA59_0 <= 49)) )
        	{
        	    alt59 = 1;
        	}
        	switch (alt59) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: p= ps
        	        {
        	        	PushFollow(FOLLOW_ps_in_synpred18_GrammaireZEnu281);
        	        	p = ps();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred18_GrammaireZEnu"

    // $ANTLR start "synpred20_GrammaireZEnu"
    public void synpred20_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:85:5: (~ ( 'begin' ) )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:85:5: ~ ( 'begin' )
        {
        	if ( (input.LA(1) >= ID && input.LA(1) <= COMMENT) || (input.LA(1) >= 11 && input.LA(1) <= 49) ) 
        	{
        	    input.Consume();
        	    state.errorRecovery = false;state.failed = false;
        	}
        	else 
        	{
        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	    MismatchedSetException mse = new MismatchedSetException(null,input);
        	    throw mse;
        	}


        }
    }
    // $ANTLR end "synpred20_GrammaireZEnu"

    // $ANTLR start "synpred21_GrammaireZEnu"
    public void synpred21_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:90:5: ( definition )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:90:5: definition
        {
        	PushFollow(FOLLOW_definition_in_synpred21_GrammaireZEnu418);
        	definition();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred21_GrammaireZEnu"

    // $ANTLR start "synpred27_GrammaireZEnu"
    public void synpred27_GrammaireZEnu_fragment() {
        IToken a1 = null;
        IToken f1 = null;
        GrammaireZEnuParser.typ_return t1 = default(GrammaireZEnuParser.typ_return);

        GrammaireZEnuParser.typ_return t2 = default(GrammaireZEnuParser.typ_return);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:4: ( ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:4: ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:4: ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:5: li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
        	{
        		PushFollow(FOLLOW_li_in_synpred27_GrammaireZEnu469);
        		li();
        		state.followingStackPointer--;
        		if (state.failed) return ;
        		if ( (input.LA(1) >= 17 && input.LA(1) <= 19) ) 
        		{
        		    input.Consume();
        		    state.errorRecovery = false;state.failed = false;
        		}
        		else 
        		{
        		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		    MismatchedSetException mse = new MismatchedSetException(null,input);
        		    throw mse;
        		}

        		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:25: (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
        		int alt62 = 2;
        		int LA62_0 = input.LA(1);

        		if ( (LA62_0 == 14 || (LA62_0 >= 21 && LA62_0 <= 24) || (LA62_0 >= 26 && LA62_0 <= 28) || LA62_0 == 30 || LA62_0 == 32 || (LA62_0 >= 37 && LA62_0 <= 47)) )
        		{
        		    alt62 = 1;
        		}
        		else if ( (LA62_0 == 13 || LA62_0 == 16) )
        		{
        		    alt62 = 2;
        		}
        		else 
        		{
        		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		    NoViableAltException nvae_d62s0 =
        		        new NoViableAltException("", 62, 0, input);

        		    throw nvae_d62s0;
        		}
        		switch (alt62) 
        		{
        		    case 1 :
        		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:26: t1= typ
        		        {
        		        	PushFollow(FOLLOW_typ_in_synpred27_GrammaireZEnu482);
        		        	t1 = typ();
        		        	state.followingStackPointer--;
        		        	if (state.failed) return ;

        		        }
        		        break;
        		    case 2 :
        		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:35: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
        		        {
        		        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:35: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
        		        	int alt61 = 2;
        		        	int LA61_0 = input.LA(1);

        		        	if ( (LA61_0 == 13) )
        		        	{
        		        	    alt61 = 1;
        		        	}
        		        	else if ( (LA61_0 == 16) )
        		        	{
        		        	    alt61 = 2;
        		        	}
        		        	else 
        		        	{
        		        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		        	    NoViableAltException nvae_d61s0 =
        		        	        new NoViableAltException("", 61, 0, input);

        		        	    throw nvae_d61s0;
        		        	}
        		        	switch (alt61) 
        		        	{
        		        	    case 1 :
        		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:36: a1= 'action'
        		        	        {
        		        	        	a1=(IToken)Match(input,13,FOLLOW_13_in_synpred27_GrammaireZEnu489); if (state.failed) return ;

        		        	        }
        		        	        break;
        		        	    case 2 :
        		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:94:48: f1= 'function' '(' t2= typ ')'
        		        	        {
        		        	        	f1=(IToken)Match(input,16,FOLLOW_16_in_synpred27_GrammaireZEnu493); if (state.failed) return ;
        		        	        	Match(input,14,FOLLOW_14_in_synpred27_GrammaireZEnu495); if (state.failed) return ;
        		        	        	PushFollow(FOLLOW_typ_in_synpred27_GrammaireZEnu499);
        		        	        	t2 = typ();
        		        	        	state.followingStackPointer--;
        		        	        	if (state.failed) return ;
        		        	        	Match(input,15,FOLLOW_15_in_synpred27_GrammaireZEnu501); if (state.failed) return ;

        		        	        }
        		        	        break;

        		        	}


        		        }
        		        break;

        		}


        	}


        }
    }
    // $ANTLR end "synpred27_GrammaireZEnu"

    // $ANTLR start "synpred29_GrammaireZEnu"
    public void synpred29_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:110:4: ( types )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:110:4: types
        {
        	PushFollow(FOLLOW_types_in_synpred29_GrammaireZEnu569);
        	types();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred29_GrammaireZEnu"

    // $ANTLR start "synpred41_GrammaireZEnu"
    public void synpred41_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:114: ( 'of' ( structure | types ) )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:114: 'of' ( structure | types )
        {
        	Match(input,29,FOLLOW_29_in_synpred41_GrammaireZEnu639); if (state.failed) return ;
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:118: ( structure | types )
        	int alt65 = 2;
        	int LA65_0 = input.LA(1);

        	if ( (LA65_0 == 14 || LA65_0 == 37) )
        	{
        	    alt65 = 1;
        	}
        	else if ( (LA65_0 == 28 || (LA65_0 >= 38 && LA65_0 <= 47)) )
        	{
        	    alt65 = 2;
        	}
        	else 
        	{
        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	    NoViableAltException nvae_d65s0 =
        	        new NoViableAltException("", 65, 0, input);

        	    throw nvae_d65s0;
        	}
        	switch (alt65) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:119: structure
        	        {
        	        	PushFollow(FOLLOW_structure_in_synpred41_GrammaireZEnu641);
        	        	structure();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;
        	    case 2 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:131: types
        	        {
        	        	PushFollow(FOLLOW_types_in_synpred41_GrammaireZEnu645);
        	        	types();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred41_GrammaireZEnu"

    // $ANTLR start "synpred47_GrammaireZEnu"
    public void synpred47_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:66: ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:66: 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' )
        {
        	Match(input,29,FOLLOW_29_in_synpred47_GrammaireZEnu617); if (state.failed) return ;
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:71: ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' )
        	int alt75 = 3;
        	switch ( input.LA(1) ) 
        	{
        	case 14:
        	case 28:
        	case 37:
        	case 38:
        	case 39:
        	case 40:
        	case 41:
        	case 42:
        	case 43:
        	case 44:
        	case 45:
        	case 46:
        	case 47:
        		{
        	    alt75 = 1;
        	    }
        	    break;
        	case 30:
        		{
        	    alt75 = 2;
        	    }
        	    break;
        	case 31:
        		{
        	    alt75 = 3;
        	    }
        	    break;
        		default:
        		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		    NoViableAltException nvae_d75s0 =
        		        new NoViableAltException("", 75, 0, input);

        		    throw nvae_d75s0;
        	}

        	switch (alt75) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:72: ( types | structure )
        	        {
        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:72: ( types | structure )
        	        	int alt68 = 2;
        	        	int LA68_0 = input.LA(1);

        	        	if ( (LA68_0 == 28 || (LA68_0 >= 38 && LA68_0 <= 47)) )
        	        	{
        	        	    alt68 = 1;
        	        	}
        	        	else if ( (LA68_0 == 14 || LA68_0 == 37) )
        	        	{
        	        	    alt68 = 2;
        	        	}
        	        	else 
        	        	{
        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	    NoViableAltException nvae_d68s0 =
        	        	        new NoViableAltException("", 68, 0, input);

        	        	    throw nvae_d68s0;
        	        	}
        	        	switch (alt68) 
        	        	{
        	        	    case 1 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:73: types
        	        	        {
        	        	        	PushFollow(FOLLOW_types_in_synpred47_GrammaireZEnu621);
        	        	        	types();
        	        	        	state.followingStackPointer--;
        	        	        	if (state.failed) return ;

        	        	        }
        	        	        break;
        	        	    case 2 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:81: structure
        	        	        {
        	        	        	PushFollow(FOLLOW_structure_in_synpred47_GrammaireZEnu625);
        	        	        	structure();
        	        	        	state.followingStackPointer--;
        	        	        	if (state.failed) return ;

        	        	        }
        	        	        break;

        	        	}


        	        }
        	        break;
        	    case 2 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:94: 'array' '(' lc ')' ( 'of' ( structure | types ) )?
        	        {
        	        	Match(input,30,FOLLOW_30_in_synpred47_GrammaireZEnu630); if (state.failed) return ;
        	        	Match(input,14,FOLLOW_14_in_synpred47_GrammaireZEnu632); if (state.failed) return ;
        	        	PushFollow(FOLLOW_lc_in_synpred47_GrammaireZEnu634);
        	        	lc();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;
        	        	Match(input,15,FOLLOW_15_in_synpred47_GrammaireZEnu636); if (state.failed) return ;
        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:113: ( 'of' ( structure | types ) )?
        	        	int alt70 = 2;
        	        	int LA70_0 = input.LA(1);

        	        	if ( (LA70_0 == 29) )
        	        	{
        	        	    alt70 = 1;
        	        	}
        	        	switch (alt70) 
        	        	{
        	        	    case 1 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:114: 'of' ( structure | types )
        	        	        {
        	        	        	Match(input,29,FOLLOW_29_in_synpred47_GrammaireZEnu639); if (state.failed) return ;
        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:118: ( structure | types )
        	        	        	int alt69 = 2;
        	        	        	int LA69_0 = input.LA(1);

        	        	        	if ( (LA69_0 == 14 || LA69_0 == 37) )
        	        	        	{
        	        	        	    alt69 = 1;
        	        	        	}
        	        	        	else if ( (LA69_0 == 28 || (LA69_0 >= 38 && LA69_0 <= 47)) )
        	        	        	{
        	        	        	    alt69 = 2;
        	        	        	}
        	        	        	else 
        	        	        	{
        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	        	    NoViableAltException nvae_d69s0 =
        	        	        	        new NoViableAltException("", 69, 0, input);

        	        	        	    throw nvae_d69s0;
        	        	        	}
        	        	        	switch (alt69) 
        	        	        	{
        	        	        	    case 1 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:119: structure
        	        	        	        {
        	        	        	        	PushFollow(FOLLOW_structure_in_synpred47_GrammaireZEnu641);
        	        	        	        	structure();
        	        	        	        	state.followingStackPointer--;
        	        	        	        	if (state.failed) return ;

        	        	        	        }
        	        	        	        break;
        	        	        	    case 2 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:131: types
        	        	        	        {
        	        	        	        	PushFollow(FOLLOW_types_in_synpred47_GrammaireZEnu645);
        	        	        	        	types();
        	        	        	        	state.followingStackPointer--;
        	        	        	        	if (state.failed) return ;

        	        	        	        }
        	        	        	        break;

        	        	        	}


        	        	        }
        	        	        break;

        	        	}


        	        }
        	        break;
        	    case 3 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:143: 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')'
        	        {
        	        	Match(input,31,FOLLOW_31_in_synpred47_GrammaireZEnu653); if (state.failed) return ;
        	        	Match(input,29,FOLLOW_29_in_synpred47_GrammaireZEnu655); if (state.failed) return ;
        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:156: ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) )
        	        	int alt72 = 2;
        	        	int LA72_0 = input.LA(1);

        	        	if ( (LA72_0 == 28 || (LA72_0 >= 38 && LA72_0 <= 47)) )
        	        	{
        	        	    alt72 = 1;
        	        	}
        	        	else if ( (LA72_0 == 32) )
        	        	{
        	        	    alt72 = 2;
        	        	}
        	        	else 
        	        	{
        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	    NoViableAltException nvae_d72s0 =
        	        	        new NoViableAltException("", 72, 0, input);

        	        	    throw nvae_d72s0;
        	        	}
        	        	switch (alt72) 
        	        	{
        	        	    case 1 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:158: types
        	        	        {
        	        	        	PushFollow(FOLLOW_types_in_synpred47_GrammaireZEnu659);
        	        	        	types();
        	        	        	state.followingStackPointer--;
        	        	        	if (state.failed) return ;

        	        	        }
        	        	        break;
        	        	    case 2 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:166: 'vector' '(' CSTE ')' 'of' ( types | structure )
        	        	        {
        	        	        	Match(input,32,FOLLOW_32_in_synpred47_GrammaireZEnu663); if (state.failed) return ;
        	        	        	Match(input,14,FOLLOW_14_in_synpred47_GrammaireZEnu665); if (state.failed) return ;
        	        	        	Match(input,CSTE,FOLLOW_CSTE_in_synpred47_GrammaireZEnu667); if (state.failed) return ;
        	        	        	Match(input,15,FOLLOW_15_in_synpred47_GrammaireZEnu669); if (state.failed) return ;
        	        	        	Match(input,29,FOLLOW_29_in_synpred47_GrammaireZEnu671); if (state.failed) return ;
        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:193: ( types | structure )
        	        	        	int alt71 = 2;
        	        	        	int LA71_0 = input.LA(1);

        	        	        	if ( (LA71_0 == 28 || (LA71_0 >= 38 && LA71_0 <= 47)) )
        	        	        	{
        	        	        	    alt71 = 1;
        	        	        	}
        	        	        	else if ( (LA71_0 == 14 || LA71_0 == 37) )
        	        	        	{
        	        	        	    alt71 = 2;
        	        	        	}
        	        	        	else 
        	        	        	{
        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	        	    NoViableAltException nvae_d71s0 =
        	        	        	        new NoViableAltException("", 71, 0, input);

        	        	        	    throw nvae_d71s0;
        	        	        	}
        	        	        	switch (alt71) 
        	        	        	{
        	        	        	    case 1 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:194: types
        	        	        	        {
        	        	        	        	PushFollow(FOLLOW_types_in_synpred47_GrammaireZEnu674);
        	        	        	        	types();
        	        	        	        	state.followingStackPointer--;
        	        	        	        	if (state.failed) return ;

        	        	        	        }
        	        	        	        break;
        	        	        	    case 2 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:203: structure
        	        	        	        {
        	        	        	        	PushFollow(FOLLOW_structure_in_synpred47_GrammaireZEnu679);
        	        	        	        	structure();
        	        	        	        	state.followingStackPointer--;
        	        	        	        	if (state.failed) return ;

        	        	        	        }
        	        	        	        break;

        	        	        	}


        	        	        }
        	        	        break;

        	        	}

        	        	Match(input,33,FOLLOW_33_in_synpred47_GrammaireZEnu684); if (state.failed) return ;
        	        	PushFollow(FOLLOW_li_in_synpred47_GrammaireZEnu686);
        	        	li();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;
        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:228: ( 'header' )?
        	        	int alt73 = 2;
        	        	int LA73_0 = input.LA(1);

        	        	if ( (LA73_0 == 34) )
        	        	{
        	        	    alt73 = 1;
        	        	}
        	        	switch (alt73) 
        	        	{
        	        	    case 1 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:229: 'header'
        	        	        {
        	        	        	Match(input,34,FOLLOW_34_in_synpred47_GrammaireZEnu689); if (state.failed) return ;

        	        	        }
        	        	        break;

        	        	}

        	        	Match(input,14,FOLLOW_14_in_synpred47_GrammaireZEnu693); if (state.failed) return ;
        	        	PushFollow(FOLLOW_types_in_synpred47_GrammaireZEnu695);
        	        	types();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;
        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:250: ( ',' types )*
        	        	do 
        	        	{
        	        	    int alt74 = 2;
        	        	    int LA74_0 = input.LA(1);

        	        	    if ( (LA74_0 == 20) )
        	        	    {
        	        	        alt74 = 1;
        	        	    }


        	        	    switch (alt74) 
        	        		{
        	        			case 1 :
        	        			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:251: ',' types
        	        			    {
        	        			    	Match(input,20,FOLLOW_20_in_synpred47_GrammaireZEnu698); if (state.failed) return ;
        	        			    	PushFollow(FOLLOW_types_in_synpred47_GrammaireZEnu700);
        	        			    	types();
        	        			    	state.followingStackPointer--;
        	        			    	if (state.failed) return ;

        	        			    }
        	        			    break;

        	        			default:
        	        			    goto loop74;
        	        	    }
        	        	} while (true);

        	        	loop74:
        	        		;	// Stops C# compiler whining that label 'loop74' has no statements

        	        	Match(input,15,FOLLOW_15_in_synpred47_GrammaireZEnu705); if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred47_GrammaireZEnu"

    // $ANTLR start "synpred48_GrammaireZEnu"
    public void synpred48_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:4: ( ( ( 'pointer' | 'pointers' ) 'to' ( sep )? )? ( 'list' | 'lists' | 'bst' ) ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )? )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:4: ( ( 'pointer' | 'pointers' ) 'to' ( sep )? )? ( 'list' | 'lists' | 'bst' ) ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )?
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:4: ( ( 'pointer' | 'pointers' ) 'to' ( sep )? )?
        	int alt77 = 2;
        	int LA77_0 = input.LA(1);

        	if ( ((LA77_0 >= 23 && LA77_0 <= 24)) )
        	{
        	    alt77 = 1;
        	}
        	switch (alt77) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:5: ( 'pointer' | 'pointers' ) 'to' ( sep )?
        	        {
        	        	if ( (input.LA(1) >= 23 && input.LA(1) <= 24) ) 
        	        	{
        	        	    input.Consume();
        	        	    state.errorRecovery = false;state.failed = false;
        	        	}
        	        	else 
        	        	{
        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
        	        	    throw mse;
        	        	}

        	        	Match(input,25,FOLLOW_25_in_synpred48_GrammaireZEnu599); if (state.failed) return ;
        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:33: ( sep )?
        	        	int alt76 = 2;
        	        	int LA76_0 = input.LA(1);

        	        	if ( ((LA76_0 >= 17 && LA76_0 <= 19)) )
        	        	{
        	        	    alt76 = 1;
        	        	}
        	        	switch (alt76) 
        	        	{
        	        	    case 1 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: sep
        	        	        {
        	        	        	PushFollow(FOLLOW_sep_in_synpred48_GrammaireZEnu601);
        	        	        	sep();
        	        	        	state.followingStackPointer--;
        	        	        	if (state.failed) return ;

        	        	        }
        	        	        break;

        	        	}


        	        }
        	        break;

        	}

        	if ( (input.LA(1) >= 26 && input.LA(1) <= 28) ) 
        	{
        	    input.Consume();
        	    state.errorRecovery = false;state.failed = false;
        	}
        	else 
        	{
        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	    MismatchedSetException mse = new MismatchedSetException(null,input);
        	    throw mse;
        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:64: ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )?
        	int alt86 = 2;
        	int LA86_0 = input.LA(1);

        	if ( (LA86_0 == 29) )
        	{
        	    alt86 = 1;
        	}
        	switch (alt86) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:66: 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' )
        	        {
        	        	Match(input,29,FOLLOW_29_in_synpred48_GrammaireZEnu617); if (state.failed) return ;
        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:71: ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' )
        	        	int alt85 = 3;
        	        	switch ( input.LA(1) ) 
        	        	{
        	        	case 14:
        	        	case 28:
        	        	case 37:
        	        	case 38:
        	        	case 39:
        	        	case 40:
        	        	case 41:
        	        	case 42:
        	        	case 43:
        	        	case 44:
        	        	case 45:
        	        	case 46:
        	        	case 47:
        	        		{
        	        	    alt85 = 1;
        	        	    }
        	        	    break;
        	        	case 30:
        	        		{
        	        	    alt85 = 2;
        	        	    }
        	        	    break;
        	        	case 31:
        	        		{
        	        	    alt85 = 3;
        	        	    }
        	        	    break;
        	        		default:
        	        		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        		    NoViableAltException nvae_d85s0 =
        	        		        new NoViableAltException("", 85, 0, input);

        	        		    throw nvae_d85s0;
        	        	}

        	        	switch (alt85) 
        	        	{
        	        	    case 1 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:72: ( types | structure )
        	        	        {
        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:72: ( types | structure )
        	        	        	int alt78 = 2;
        	        	        	int LA78_0 = input.LA(1);

        	        	        	if ( (LA78_0 == 28 || (LA78_0 >= 38 && LA78_0 <= 47)) )
        	        	        	{
        	        	        	    alt78 = 1;
        	        	        	}
        	        	        	else if ( (LA78_0 == 14 || LA78_0 == 37) )
        	        	        	{
        	        	        	    alt78 = 2;
        	        	        	}
        	        	        	else 
        	        	        	{
        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	        	    NoViableAltException nvae_d78s0 =
        	        	        	        new NoViableAltException("", 78, 0, input);

        	        	        	    throw nvae_d78s0;
        	        	        	}
        	        	        	switch (alt78) 
        	        	        	{
        	        	        	    case 1 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:73: types
        	        	        	        {
        	        	        	        	PushFollow(FOLLOW_types_in_synpred48_GrammaireZEnu621);
        	        	        	        	types();
        	        	        	        	state.followingStackPointer--;
        	        	        	        	if (state.failed) return ;

        	        	        	        }
        	        	        	        break;
        	        	        	    case 2 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:81: structure
        	        	        	        {
        	        	        	        	PushFollow(FOLLOW_structure_in_synpred48_GrammaireZEnu625);
        	        	        	        	structure();
        	        	        	        	state.followingStackPointer--;
        	        	        	        	if (state.failed) return ;

        	        	        	        }
        	        	        	        break;

        	        	        	}


        	        	        }
        	        	        break;
        	        	    case 2 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:94: 'array' '(' lc ')' ( 'of' ( structure | types ) )?
        	        	        {
        	        	        	Match(input,30,FOLLOW_30_in_synpred48_GrammaireZEnu630); if (state.failed) return ;
        	        	        	Match(input,14,FOLLOW_14_in_synpred48_GrammaireZEnu632); if (state.failed) return ;
        	        	        	PushFollow(FOLLOW_lc_in_synpred48_GrammaireZEnu634);
        	        	        	lc();
        	        	        	state.followingStackPointer--;
        	        	        	if (state.failed) return ;
        	        	        	Match(input,15,FOLLOW_15_in_synpred48_GrammaireZEnu636); if (state.failed) return ;
        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:113: ( 'of' ( structure | types ) )?
        	        	        	int alt80 = 2;
        	        	        	int LA80_0 = input.LA(1);

        	        	        	if ( (LA80_0 == 29) )
        	        	        	{
        	        	        	    alt80 = 1;
        	        	        	}
        	        	        	switch (alt80) 
        	        	        	{
        	        	        	    case 1 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:114: 'of' ( structure | types )
        	        	        	        {
        	        	        	        	Match(input,29,FOLLOW_29_in_synpred48_GrammaireZEnu639); if (state.failed) return ;
        	        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:118: ( structure | types )
        	        	        	        	int alt79 = 2;
        	        	        	        	int LA79_0 = input.LA(1);

        	        	        	        	if ( (LA79_0 == 14 || LA79_0 == 37) )
        	        	        	        	{
        	        	        	        	    alt79 = 1;
        	        	        	        	}
        	        	        	        	else if ( (LA79_0 == 28 || (LA79_0 >= 38 && LA79_0 <= 47)) )
        	        	        	        	{
        	        	        	        	    alt79 = 2;
        	        	        	        	}
        	        	        	        	else 
        	        	        	        	{
        	        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	        	        	    NoViableAltException nvae_d79s0 =
        	        	        	        	        new NoViableAltException("", 79, 0, input);

        	        	        	        	    throw nvae_d79s0;
        	        	        	        	}
        	        	        	        	switch (alt79) 
        	        	        	        	{
        	        	        	        	    case 1 :
        	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:119: structure
        	        	        	        	        {
        	        	        	        	        	PushFollow(FOLLOW_structure_in_synpred48_GrammaireZEnu641);
        	        	        	        	        	structure();
        	        	        	        	        	state.followingStackPointer--;
        	        	        	        	        	if (state.failed) return ;

        	        	        	        	        }
        	        	        	        	        break;
        	        	        	        	    case 2 :
        	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:131: types
        	        	        	        	        {
        	        	        	        	        	PushFollow(FOLLOW_types_in_synpred48_GrammaireZEnu645);
        	        	        	        	        	types();
        	        	        	        	        	state.followingStackPointer--;
        	        	        	        	        	if (state.failed) return ;

        	        	        	        	        }
        	        	        	        	        break;

        	        	        	        	}


        	        	        	        }
        	        	        	        break;

        	        	        	}


        	        	        }
        	        	        break;
        	        	    case 3 :
        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:143: 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')'
        	        	        {
        	        	        	Match(input,31,FOLLOW_31_in_synpred48_GrammaireZEnu653); if (state.failed) return ;
        	        	        	Match(input,29,FOLLOW_29_in_synpred48_GrammaireZEnu655); if (state.failed) return ;
        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:156: ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) )
        	        	        	int alt82 = 2;
        	        	        	int LA82_0 = input.LA(1);

        	        	        	if ( (LA82_0 == 28 || (LA82_0 >= 38 && LA82_0 <= 47)) )
        	        	        	{
        	        	        	    alt82 = 1;
        	        	        	}
        	        	        	else if ( (LA82_0 == 32) )
        	        	        	{
        	        	        	    alt82 = 2;
        	        	        	}
        	        	        	else 
        	        	        	{
        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	        	    NoViableAltException nvae_d82s0 =
        	        	        	        new NoViableAltException("", 82, 0, input);

        	        	        	    throw nvae_d82s0;
        	        	        	}
        	        	        	switch (alt82) 
        	        	        	{
        	        	        	    case 1 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:158: types
        	        	        	        {
        	        	        	        	PushFollow(FOLLOW_types_in_synpred48_GrammaireZEnu659);
        	        	        	        	types();
        	        	        	        	state.followingStackPointer--;
        	        	        	        	if (state.failed) return ;

        	        	        	        }
        	        	        	        break;
        	        	        	    case 2 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:166: 'vector' '(' CSTE ')' 'of' ( types | structure )
        	        	        	        {
        	        	        	        	Match(input,32,FOLLOW_32_in_synpred48_GrammaireZEnu663); if (state.failed) return ;
        	        	        	        	Match(input,14,FOLLOW_14_in_synpred48_GrammaireZEnu665); if (state.failed) return ;
        	        	        	        	Match(input,CSTE,FOLLOW_CSTE_in_synpred48_GrammaireZEnu667); if (state.failed) return ;
        	        	        	        	Match(input,15,FOLLOW_15_in_synpred48_GrammaireZEnu669); if (state.failed) return ;
        	        	        	        	Match(input,29,FOLLOW_29_in_synpred48_GrammaireZEnu671); if (state.failed) return ;
        	        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:193: ( types | structure )
        	        	        	        	int alt81 = 2;
        	        	        	        	int LA81_0 = input.LA(1);

        	        	        	        	if ( (LA81_0 == 28 || (LA81_0 >= 38 && LA81_0 <= 47)) )
        	        	        	        	{
        	        	        	        	    alt81 = 1;
        	        	        	        	}
        	        	        	        	else if ( (LA81_0 == 14 || LA81_0 == 37) )
        	        	        	        	{
        	        	        	        	    alt81 = 2;
        	        	        	        	}
        	        	        	        	else 
        	        	        	        	{
        	        	        	        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        	        	        	        	    NoViableAltException nvae_d81s0 =
        	        	        	        	        new NoViableAltException("", 81, 0, input);

        	        	        	        	    throw nvae_d81s0;
        	        	        	        	}
        	        	        	        	switch (alt81) 
        	        	        	        	{
        	        	        	        	    case 1 :
        	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:194: types
        	        	        	        	        {
        	        	        	        	        	PushFollow(FOLLOW_types_in_synpred48_GrammaireZEnu674);
        	        	        	        	        	types();
        	        	        	        	        	state.followingStackPointer--;
        	        	        	        	        	if (state.failed) return ;

        	        	        	        	        }
        	        	        	        	        break;
        	        	        	        	    case 2 :
        	        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:203: structure
        	        	        	        	        {
        	        	        	        	        	PushFollow(FOLLOW_structure_in_synpred48_GrammaireZEnu679);
        	        	        	        	        	structure();
        	        	        	        	        	state.followingStackPointer--;
        	        	        	        	        	if (state.failed) return ;

        	        	        	        	        }
        	        	        	        	        break;

        	        	        	        	}


        	        	        	        }
        	        	        	        break;

        	        	        	}

        	        	        	Match(input,33,FOLLOW_33_in_synpred48_GrammaireZEnu684); if (state.failed) return ;
        	        	        	PushFollow(FOLLOW_li_in_synpred48_GrammaireZEnu686);
        	        	        	li();
        	        	        	state.followingStackPointer--;
        	        	        	if (state.failed) return ;
        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:228: ( 'header' )?
        	        	        	int alt83 = 2;
        	        	        	int LA83_0 = input.LA(1);

        	        	        	if ( (LA83_0 == 34) )
        	        	        	{
        	        	        	    alt83 = 1;
        	        	        	}
        	        	        	switch (alt83) 
        	        	        	{
        	        	        	    case 1 :
        	        	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:229: 'header'
        	        	        	        {
        	        	        	        	Match(input,34,FOLLOW_34_in_synpred48_GrammaireZEnu689); if (state.failed) return ;

        	        	        	        }
        	        	        	        break;

        	        	        	}

        	        	        	Match(input,14,FOLLOW_14_in_synpred48_GrammaireZEnu693); if (state.failed) return ;
        	        	        	PushFollow(FOLLOW_types_in_synpred48_GrammaireZEnu695);
        	        	        	types();
        	        	        	state.followingStackPointer--;
        	        	        	if (state.failed) return ;
        	        	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:250: ( ',' types )*
        	        	        	do 
        	        	        	{
        	        	        	    int alt84 = 2;
        	        	        	    int LA84_0 = input.LA(1);

        	        	        	    if ( (LA84_0 == 20) )
        	        	        	    {
        	        	        	        alt84 = 1;
        	        	        	    }


        	        	        	    switch (alt84) 
        	        	        		{
        	        	        			case 1 :
        	        	        			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:114:251: ',' types
        	        	        			    {
        	        	        			    	Match(input,20,FOLLOW_20_in_synpred48_GrammaireZEnu698); if (state.failed) return ;
        	        	        			    	PushFollow(FOLLOW_types_in_synpred48_GrammaireZEnu700);
        	        	        			    	types();
        	        	        			    	state.followingStackPointer--;
        	        	        			    	if (state.failed) return ;

        	        	        			    }
        	        	        			    break;

        	        	        			default:
        	        	        			    goto loop84;
        	        	        	    }
        	        	        	} while (true);

        	        	        	loop84:
        	        	        		;	// Stops C# compiler whining that label 'loop84' has no statements

        	        	        	Match(input,15,FOLLOW_15_in_synpred48_GrammaireZEnu705); if (state.failed) return ;

        	        	        }
        	        	        break;

        	        	}


        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred48_GrammaireZEnu"

    // $ANTLR start "synpred53_GrammaireZEnu"
    public void synpred53_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:24: ( ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' ) )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:24: ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' )
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:24: ( 'of' )?
        	int alt87 = 2;
        	int LA87_0 = input.LA(1);

        	if ( (LA87_0 == 29) )
        	{
        	    alt87 = 1;
        	}
        	switch (alt87) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: 'of'
        	        {
        	        	Match(input,29,FOLLOW_29_in_synpred53_GrammaireZEnu722); if (state.failed) return ;

        	        }
        	        break;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:29: ( structure | types | 'dynamic' | 'dynamics' )
        	int alt88 = 4;
        	switch ( input.LA(1) ) 
        	{
        	case 14:
        	case 37:
        		{
        	    alt88 = 1;
        	    }
        	    break;
        	case 28:
        	case 38:
        	case 39:
        	case 40:
        	case 41:
        	case 42:
        	case 43:
        	case 44:
        	case 45:
        	case 46:
        	case 47:
        		{
        	    alt88 = 2;
        	    }
        	    break;
        	case 35:
        		{
        	    alt88 = 3;
        	    }
        	    break;
        	case 36:
        		{
        	    alt88 = 4;
        	    }
        	    break;
        		default:
        		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		    NoViableAltException nvae_d88s0 =
        		        new NoViableAltException("", 88, 0, input);

        		    throw nvae_d88s0;
        	}

        	switch (alt88) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:30: structure
        	        {
        	        	PushFollow(FOLLOW_structure_in_synpred53_GrammaireZEnu725);
        	        	structure();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;
        	    case 2 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:42: types
        	        {
        	        	PushFollow(FOLLOW_types_in_synpred53_GrammaireZEnu729);
        	        	types();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;
        	    case 3 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:50: 'dynamic'
        	        {
        	        	Match(input,35,FOLLOW_35_in_synpred53_GrammaireZEnu733); if (state.failed) return ;

        	        }
        	        break;
        	    case 4 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:115:62: 'dynamics'
        	        {
        	        	Match(input,36,FOLLOW_36_in_synpred53_GrammaireZEnu737); if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred53_GrammaireZEnu"

    // $ANTLR start "synpred59_GrammaireZEnu"
    public void synpred59_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:27: ( ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' ) )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:27: ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' )
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:27: ( 'of' )?
        	int alt92 = 2;
        	int LA92_0 = input.LA(1);

        	if ( (LA92_0 == 29) )
        	{
        	    alt92 = 1;
        	}
        	switch (alt92) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:0:0: 'of'
        	        {
        	        	Match(input,29,FOLLOW_29_in_synpred59_GrammaireZEnu755); if (state.failed) return ;

        	        }
        	        break;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:33: ( types | structure | 'dynamic' | 'dynamics' )
        	int alt93 = 4;
        	switch ( input.LA(1) ) 
        	{
        	case 28:
        	case 38:
        	case 39:
        	case 40:
        	case 41:
        	case 42:
        	case 43:
        	case 44:
        	case 45:
        	case 46:
        	case 47:
        		{
        	    alt93 = 1;
        	    }
        	    break;
        	case 14:
        	case 37:
        		{
        	    alt93 = 2;
        	    }
        	    break;
        	case 35:
        		{
        	    alt93 = 3;
        	    }
        	    break;
        	case 36:
        		{
        	    alt93 = 4;
        	    }
        	    break;
        		default:
        		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		    NoViableAltException nvae_d93s0 =
        		        new NoViableAltException("", 93, 0, input);

        		    throw nvae_d93s0;
        	}

        	switch (alt93) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:34: types
        	        {
        	        	PushFollow(FOLLOW_types_in_synpred59_GrammaireZEnu759);
        	        	types();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;
        	    case 2 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:43: structure
        	        {
        	        	PushFollow(FOLLOW_structure_in_synpred59_GrammaireZEnu764);
        	        	structure();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;
        	    case 3 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:55: 'dynamic'
        	        {
        	        	Match(input,35,FOLLOW_35_in_synpred59_GrammaireZEnu768); if (state.failed) return ;

        	        }
        	        break;
        	    case 4 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:116:67: 'dynamics'
        	        {
        	        	Match(input,36,FOLLOW_36_in_synpred59_GrammaireZEnu772); if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred59_GrammaireZEnu"

    // $ANTLR start "synpred62_GrammaireZEnu"
    public void synpred62_GrammaireZEnu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:4: ( ( 'structure' )? '(' ( types ) ( ',' types )* ')' )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:5: ( 'structure' )? '(' ( types ) ( ',' types )* ')'
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:5: ( 'structure' )?
        	int alt94 = 2;
        	int LA94_0 = input.LA(1);

        	if ( (LA94_0 == 37) )
        	{
        	    alt94 = 1;
        	}
        	switch (alt94) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:6: 'structure'
        	        {
        	        	Match(input,37,FOLLOW_37_in_synpred62_GrammaireZEnu790); if (state.failed) return ;

        	        }
        	        break;

        	}

        	Match(input,14,FOLLOW_14_in_synpred62_GrammaireZEnu794); if (state.failed) return ;
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:24: ( types )
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:25: types
        	{
        		PushFollow(FOLLOW_types_in_synpred62_GrammaireZEnu797);
        		types();
        		state.followingStackPointer--;
        		if (state.failed) return ;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:32: ( ',' types )*
        	do 
        	{
        	    int alt95 = 2;
        	    int LA95_0 = input.LA(1);

        	    if ( (LA95_0 == 20) )
        	    {
        	        alt95 = 1;
        	    }


        	    switch (alt95) 
        		{
        			case 1 :
        			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZEnu.g:120:33: ',' types
        			    {
        			    	Match(input,20,FOLLOW_20_in_synpred62_GrammaireZEnu801); if (state.failed) return ;
        			    	PushFollow(FOLLOW_types_in_synpred62_GrammaireZEnu803);
        			    	types();
        			    	state.followingStackPointer--;
        			    	if (state.failed) return ;

        			    }
        			    break;

        			default:
        			    goto loop95;
        	    }
        	} while (true);

        	loop95:
        		;	// Stops C# compiler whining that label 'loop95' has no statements

        	Match(input,15,FOLLOW_15_in_synpred62_GrammaireZEnu809); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred62_GrammaireZEnu"

    // Delegated rules

   	public bool synpred12_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred12_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred21_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred21_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred47_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred47_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred59_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred59_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred41_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred41_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred48_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred48_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred16_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred16_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred29_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred29_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred18_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred18_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred20_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred20_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred10_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred10_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred27_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred27_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred62_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred62_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred8_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred8_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred15_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred15_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred9_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred9_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred6_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred6_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred53_GrammaireZEnu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred53_GrammaireZEnu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}


   	protected DFA8 dfa8;
   	protected DFA15 dfa15;
   	protected DFA25 dfa25;
   	protected DFA37 dfa37;
   	protected DFA31 dfa31;
   	protected DFA40 dfa40;
   	protected DFA43 dfa43;
   	protected DFA51 dfa51;
	private void InitializeCyclicDFAs()
	{
    	this.dfa8 = new DFA8(this);
    	this.dfa15 = new DFA15(this);
    	this.dfa25 = new DFA25(this);
    	this.dfa37 = new DFA37(this);
    	this.dfa31 = new DFA31(this);
    	this.dfa40 = new DFA40(this);
    	this.dfa43 = new DFA43(this);
    	this.dfa51 = new DFA51(this);
	    this.dfa8.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA8_SpecialStateTransition);
	    this.dfa15.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA15_SpecialStateTransition);
	    this.dfa25.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA25_SpecialStateTransition);
	    this.dfa37.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA37_SpecialStateTransition);
	    this.dfa31.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA31_SpecialStateTransition);
	    this.dfa40.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA40_SpecialStateTransition);
	    this.dfa43.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA43_SpecialStateTransition);
	    this.dfa51.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA51_SpecialStateTransition);
	}

    const string DFA8_eotS =
        "\x08\uffff";
    const string DFA8_eofS =
        "\x08\uffff";
    const string DFA8_minS =
        "\x02\x04\x01\uffff\x01\x04\x01\x00\x01\x04\x01\uffff\x01\x04";
    const string DFA8_maxS =
        "\x02\x31\x01\uffff\x01\x31\x01\x00\x01\x31\x01\uffff\x01\x31";
    const string DFA8_acceptS =
        "\x02\uffff\x01\x02\x03\uffff\x01\x01\x01\uffff";
    const string DFA8_specialS =
        "\x04\uffff\x01\x00\x03\uffff}>";
    static readonly string[] DFA8_transitionS = {
            "\x0a\x02\x01\x01\x23\x02",
            "\x01\x03\x05\x02\x01\uffff\x04\x02\x01\x04\x22\x02",
            "",
            "\x06\x02\x01\uffff\x04\x02\x01\x04\x04\x02\x01\x05\x1d\x02",
            "\x01\uffff",
            "\x01\x07\x05\x02\x01\uffff\x27\x02",
            "",
            "\x06\x02\x01\uffff\x04\x02\x01\x04\x04\x02\x01\x05\x1d\x02"
    };

    static readonly short[] DFA8_eot = DFA.UnpackEncodedString(DFA8_eotS);
    static readonly short[] DFA8_eof = DFA.UnpackEncodedString(DFA8_eofS);
    static readonly char[] DFA8_min = DFA.UnpackEncodedStringToUnsignedChars(DFA8_minS);
    static readonly char[] DFA8_max = DFA.UnpackEncodedStringToUnsignedChars(DFA8_maxS);
    static readonly short[] DFA8_accept = DFA.UnpackEncodedString(DFA8_acceptS);
    static readonly short[] DFA8_special = DFA.UnpackEncodedString(DFA8_specialS);
    static readonly short[][] DFA8_transition = DFA.UnpackEncodedStringArray(DFA8_transitionS);

    protected class DFA8 : DFA
    {
        public DFA8(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 8;
            this.eot = DFA8_eot;
            this.eof = DFA8_eof;
            this.min = DFA8_min;
            this.max = DFA8_max;
            this.accept = DFA8_accept;
            this.special = DFA8_special;
            this.transition = DFA8_transition;

        }

        override public string Description
        {
            get { return "45:23: ( '(' (i= li )? ')' )?"; }
        }

    }


    protected internal int DFA8_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA8_4 = input.LA(1);

                   	 
                   	int index8_4 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred8_GrammaireZEnu()) ) { s = 6; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index8_4);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae8 =
            new NoViableAltException(dfa.Description, 8, _s, input);
        dfa.Error(nvae8);
        throw nvae8;
    }
    const string DFA15_eotS =
        "\x2a\uffff";
    const string DFA15_eofS =
        "\x2a\uffff";
    const string DFA15_minS =
        "\x01\x04\x03\x00\x03\x04\x02\x00\x02\x04\x02\uffff\x06\x04\x01"+
        "\x00\x08\x04\x02\x00\x09\x04\x01\x00\x02\x04";
    const string DFA15_maxS =
        "\x01\x31\x03\x00\x03\x31\x02\x00\x02\x31\x02\uffff\x06\x31\x01"+
        "\x00\x08\x31\x02\x00\x09\x31\x01\x00\x02\x31";
    const string DFA15_acceptS =
        "\x0b\uffff\x01\x02\x01\x01\x1d\uffff";
    const string DFA15_specialS =
        "\x01\uffff\x01\x08\x01\x04\x01\x01\x03\uffff\x01\x03\x01\x07\x0a"+
        "\uffff\x01\x02\x08\uffff\x01\x05\x01\x06\x09\uffff\x01\x00\x02\uffff}>";
    static readonly string[] DFA15_transitionS = {
            "\x0a\x0b\x01\x05\x06\x0b\x01\x02\x01\x03\x02\x06\x01\x0b\x02"+
            "\x08\x01\x01\x01\x0b\x01\x09\x01\x0b\x01\x0a\x04\x0b\x01\x04"+
            "\x0a\x07\x02\x0b",
            "\x01\uffff",
            "\x01\uffff",
            "\x01\uffff",
            "\x06\x0b\x01\uffff\x03\x0b\x01\x05\x23\x0b",
            "\x06\x0b\x01\uffff\x11\x0b\x01\x0d\x03\x0b\x01\x0e\x05\x0b"+
            "\x0a\x0d\x02\x0b",
            "\x06\x0b\x01\uffff\x0e\x0b\x01\x0f\x18\x0b",
            "\x01\uffff",
            "\x01\uffff",
            "\x06\x0b\x01\uffff\x03\x0b\x01\x10\x23\x0b",
            "\x06\x0b\x01\uffff\x03\x0b\x01\x11\x23\x0b",
            "",
            "",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x13\x04\x0b\x01\x12\x1d\x0b",
            "\x06\x0b\x01\uffff\x03\x0b\x01\x14\x23\x0b",
            "\x06\x0b\x01\uffff\x06\x0b\x03\x15\x06\x0b\x03\x08\x15\x0b",
            "\x01\x0b\x01\x16\x04\x0b\x01\uffff\x27\x0b",
            "\x01\x0b\x01\x17\x04\x0b\x01\uffff\x27\x0b",
            "\x06\x0b\x01\uffff\x11\x0b\x01\x18\x03\x0b\x01\x19\x05\x0b"+
            "\x0a\x18\x02\x0b",
            "\x01\uffff",
            "\x01\x0b\x01\x1a\x04\x0b\x01\uffff\x27\x0b",
            "\x06\x0b\x01\uffff\x0f\x0b\x03\x08\x15\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x1c\x04\x0b\x01\x1b\x1d\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x1d\x22\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x13\x04\x0b\x01\x12\x1d\x0b",
            "\x06\x0b\x01\uffff\x03\x0b\x01\x1e\x23\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x1f\x22\x0b",
            "\x01\x0b\x01\x20\x04\x0b\x01\uffff\x27\x0b",
            "\x01\uffff",
            "\x01\uffff",
            "\x01\x0b\x01\x21\x04\x0b\x01\uffff\x27\x0b",
            "\x06\x0b\x01\uffff\x12\x0b\x01\x22\x14\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x1c\x04\x0b\x01\x1b\x1d\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x23\x22\x0b",
            "\x06\x0b\x01\uffff\x11\x0b\x01\x24\x09\x0b\x0a\x24\x02\x0b",
            "\x06\x0b\x01\uffff\x12\x0b\x01\x25\x14\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x27\x04\x0b\x01\x26\x1d\x0b",
            "\x06\x0b\x01\uffff\x11\x0b\x01\x28\x09\x0b\x0a\x28\x02\x0b",
            "\x06\x0b\x01\uffff\x11\x0b\x01\x29\x03\x0b\x01\x19\x05\x0b"+
            "\x0a\x29\x02\x0b",
            "\x01\uffff",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x27\x04\x0b\x01\x26\x1d\x0b",
            "\x06\x0b\x01\uffff\x04\x0b\x01\x27\x04\x0b\x01\x26\x1d\x0b"
    };

    static readonly short[] DFA15_eot = DFA.UnpackEncodedString(DFA15_eotS);
    static readonly short[] DFA15_eof = DFA.UnpackEncodedString(DFA15_eofS);
    static readonly char[] DFA15_min = DFA.UnpackEncodedStringToUnsignedChars(DFA15_minS);
    static readonly char[] DFA15_max = DFA.UnpackEncodedStringToUnsignedChars(DFA15_maxS);
    static readonly short[] DFA15_accept = DFA.UnpackEncodedString(DFA15_acceptS);
    static readonly short[] DFA15_special = DFA.UnpackEncodedString(DFA15_specialS);
    static readonly short[][] DFA15_transition = DFA.UnpackEncodedStringArray(DFA15_transitionS);

    protected class DFA15 : DFA
    {
        public DFA15(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 15;
            this.eot = DFA15_eot;
            this.eof = DFA15_eof;
            this.min = DFA15_min;
            this.max = DFA15_max;
            this.accept = DFA15_accept;
            this.special = DFA15_special;
            this.transition = DFA15_transition;

        }

        override public string Description
        {
            get { return "63:44: (ta= typ )?"; }
        }

    }


    protected internal int DFA15_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA15_39 = input.LA(1);

                   	 
                   	int index15_39 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_39);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA15_3 = input.LA(1);

                   	 
                   	int index15_3 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_3);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA15_19 = input.LA(1);

                   	 
                   	int index15_19 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_19);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 3 : 
                   	int LA15_7 = input.LA(1);

                   	 
                   	int index15_7 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_7);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 4 : 
                   	int LA15_2 = input.LA(1);

                   	 
                   	int index15_2 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_2);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 5 : 
                   	int LA15_28 = input.LA(1);

                   	 
                   	int index15_28 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_28);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 6 : 
                   	int LA15_29 = input.LA(1);

                   	 
                   	int index15_29 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_29);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 7 : 
                   	int LA15_8 = input.LA(1);

                   	 
                   	int index15_8 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_8);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 8 : 
                   	int LA15_1 = input.LA(1);

                   	 
                   	int index15_1 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred15_GrammaireZEnu()) ) { s = 12; }

                   	else if ( (true) ) { s = 11; }

                   	 
                   	input.Seek(index15_1);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae15 =
            new NoViableAltException(dfa.Description, 15, _s, input);
        dfa.Error(nvae15);
        throw nvae15;
    }
    const string DFA25_eotS =
        "\u00e7\uffff";
    const string DFA25_eofS =
        "\u00e7\uffff";
    const string DFA25_minS =
        "\x02\x04\x01\uffff\x03\x04\x03\x00\x03\x04\x02\x00\x02\x04\x01"+
        "\x00\x01\x04\x01\uffff\x07\x04\x01\x00\x12\x04\x03\x00\x39\x04\x01"+
        "\x00\x7d\x04";
    const string DFA25_maxS =
        "\x02\x31\x01\uffff\x03\x31\x03\x00\x03\x31\x02\x00\x02\x31\x01"+
        "\x00\x01\x31\x01\uffff\x07\x31\x01\x00\x12\x31\x03\x00\x39\x31\x01"+
        "\x00\x7d\x31";
    const string DFA25_acceptS =
        "\x02\uffff\x01\x02\x0f\uffff\x01\x01\u00d4\uffff";
    const string DFA25_specialS =
        "\x06\uffff\x01\x02\x01\x07\x01\x09\x03\uffff\x01\x04\x01\x08\x02"+
        "\uffff\x01\x05\x09\uffff\x01\x00\x12\uffff\x01\x01\x01\x0a\x01\x03"+
        "\x39\uffff\x01\x06\x7d\uffff}>";
    static readonly string[] DFA25_transitionS = {
            "\x01\x01\x05\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x06\x02\x03\x04\x01\x03\x1d\x02",
            "",
            "\x01\x05\x05\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x02\x02\x01\x10\x01\x0a\x01\x02\x01\x11"+
            "\x04\x02\x01\x07\x01\x08\x02\x0b\x01\x02\x02\x0d\x01\x06\x01"+
            "\x02\x01\x0e\x01\x02\x01\x0f\x04\x02\x01\x09\x0a\x0c\x02\x02",
            "\x06\x02\x01\uffff\x06\x02\x03\x04\x01\x03\x1d\x02",
            "\x01\uffff",
            "\x01\uffff",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x03\x02\x01\x0a\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x13\x03\x02\x01\x14\x05\x02"+
            "\x0a\x13\x02\x02",
            "\x06\x02\x01\uffff\x0e\x02\x01\x15\x18\x02",
            "\x01\uffff",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x03\x02\x01\x16\x23\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x17\x23\x02",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x03\x02\x01\x18\x23\x02",
            "",
            "\x06\x02\x01\uffff\x04\x02\x01\x1a\x04\x02\x01\x19\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x1b\x23\x02",
            "\x06\x02\x01\uffff\x06\x02\x03\x1c\x06\x02\x03\x0d\x15\x02",
            "\x01\x02\x01\x1d\x04\x02\x01\uffff\x27\x02",
            "\x01\x02\x01\x1e\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x23\x06\x02\x01\x20\x01\x21"+
            "\x02\x24\x01\x02\x02\x26\x01\x1f\x01\x02\x01\x27\x01\x02\x01"+
            "\x28\x04\x02\x01\x22\x0a\x25\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x29\x03\x02\x01\x2a\x05\x02"+
            "\x0a\x29\x02\x02",
            "\x01\uffff",
            "\x01\x02\x01\x2b\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x0f\x02\x03\x0d\x15\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2d\x04\x02\x01\x2c\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2e\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x0d\x02\x01\x30\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x23\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x31\x03\x02\x01\x32\x05\x02"+
            "\x0a\x31\x02\x02",
            "\x06\x02\x01\uffff\x0e\x02\x01\x33\x18\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x0d\x02\x01\x30\x14\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x34\x23\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x35\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x1a\x04\x02\x01\x19\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x36\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x37\x22\x02",
            "\x01\x02\x01\x38\x04\x02\x01\uffff\x27\x02",
            "\x01\uffff",
            "\x01\uffff",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x03\x02\x01\x3b\x0d\x02\x01\x39\x01\x02"+
            "\x01\x3c\x01\x3d\x05\x02\x01\x3a\x0a\x39\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x3f\x04\x02\x01\x3e\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x40\x23\x02",
            "\x06\x02\x01\uffff\x06\x02\x03\x41\x06\x02\x03\x26\x15\x02",
            "\x01\x02\x01\x42\x04\x02\x01\uffff\x27\x02",
            "\x01\x02\x01\x43\x04\x02\x01\uffff\x27\x02",
            "\x01\x02\x01\x44\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x45\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2d\x04\x02\x01\x2c\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x3b\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x46\x03\x02\x01\x47\x05\x02"+
            "\x0a\x46\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x48\x23\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x49\x14\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x4a\x03\x02\x01\x4b\x05\x02"+
            "\x0a\x4a\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x01\x02\x01\x4c\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x0f\x02\x03\x26\x15\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x4e\x04\x02\x01\x4d\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x4f\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x50\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x51\x09\x02\x0a\x51\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x53\x04\x02\x01\x52\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x54\x23\x02",
            "\x01\x02\x01\x55\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x56\x03\x02\x01\x57\x05\x02"+
            "\x0a\x56\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x3f\x04\x02\x01\x3e\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x58\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x59\x22\x02",
            "\x01\x02\x01\x5a\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x01\x2f\x0c\x02\x01\x5e"+
            "\x01\x5b\x05\x02\x01\x5f\x01\x60\x01\x5c\x0a\x5e\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x01\x2f\x0c\x02\x01\x62"+
            "\x01\x61\x05\x02\x01\x65\x01\x66\x01\x63\x0a\x62\x02\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x67\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x69\x04\x02\x01\x68\x1d\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x6a\x03\x02\x01\x6b\x05\x02"+
            "\x0a\x6a\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x01\x02\x01\x6c\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x6e\x04\x02\x01\x6d\x1d\x02",
            "\x06\x02\x01\uffff\x16\x02\x01\x6f\x10\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x70\x23\x02",
            "\x01\x02\x01\x71\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x72\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x4e\x04\x02\x01\x4d\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x0d\x02\x01\x5e\x06\x02"+
            "\x01\x5f\x01\x60\x01\x5c\x0a\x5e\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x73\x03\x02\x01\x74\x05\x02"+
            "\x0a\x73\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x01\x2f\x0c\x02\x01\x5e"+
            "\x01\x5b\x05\x02\x01\x5f\x01\x60\x01\x5c\x0a\x5e\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x01\x2f\x0c\x02\x01\x5e"+
            "\x01\x5b\x05\x02\x01\x5f\x01\x60\x01\x5c\x0a\x5e\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x01\x2f\x0c\x02\x01\x5e"+
            "\x01\x5b\x05\x02\x01\x5f\x01\x60\x01\x5c\x0a\x5e\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x0d\x02\x01\x62\x06\x02"+
            "\x01\x65\x01\x66\x01\x63\x0a\x62\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x01\x2f\x0c\x02\x01\x62"+
            "\x01\x61\x05\x02\x01\x65\x01\x66\x01\x63\x0a\x62\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x75\x03\x02\x01\x76\x05\x02"+
            "\x0a\x75\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x01\x2f\x0c\x02\x01\x62"+
            "\x01\x61\x05\x02\x01\x65\x01\x66\x01\x63\x0a\x62\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x01\x2f\x0c\x02\x01\x62"+
            "\x01\x61\x05\x02\x01\x65\x01\x66\x01\x63\x0a\x62\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x77\x09\x02\x0a\x77\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x78\x03\x02\x01\x2a\x05\x02"+
            "\x0a\x78\x02\x02",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x04\x02\x01\x53\x04\x02\x01\x52\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x79\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x7a\x22\x02",
            "\x01\x02\x01\x7b\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x0d\x02\x01\x7c\x14\x02",
            "\x01\x7d\x05\x02\x01\uffff\x27\x02",
            "\x01\x02\x01\x7e\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x7f\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u0080\x09\x02\x0a\u0080\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0082\x04\x02\x01\u0081\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u0083\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0085\x04\x02\x01\u0084\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u0086\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x69\x04\x02\x01\x68\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x69\x04\x02\x01\x68\x1d\x02",
            "\x01\x02\x01\u0087\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u0088\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x6e\x04\x02\x01\x6d\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u008a\x0d\x02\x01\u008b\x08"+
            "\x02\x01\u0089\x0a\u008b\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u008e\x05\x02\x01\u008c\x0d"+
            "\x02\x01\u008d\x0f\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u008f\x22\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u0090\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0092\x04\x02\x01\u0091\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u0093\x03\x02\x01\u0094\x05"+
            "\x02\x0a\u0093\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x01\x2f\x0c\x02\x01\x5e"+
            "\x01\x5b\x05\x02\x01\x5f\x01\x60\x01\x5c\x0a\x5e\x02\x02",
            "\x01\x02\x01\u0095\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u0096\x03\x02\x01\u0097\x05"+
            "\x02\x0a\u0096\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x01\x2f\x0c\x02\x01\x62"+
            "\x01\x61\x05\x02\x01\x65\x01\x66\x01\x63\x0a\x62\x02\x02",
            "\x01\x02\x01\u0098\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0099\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u009a\x09\x02\x0a\u009a\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u008a\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u009b\x03\x02\x01\u009c\x05"+
            "\x02\x0a\u009b\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x01\u009d\x05\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u008e\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u009e\x09\x02\x0a\u009e\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u009f\x14\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00a0\x09\x02\x0a\u00a0\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00a1\x03\x02\x01\x4b\x05\x02"+
            "\x0a\u00a1\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0082\x04\x02\x01\u0081\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00a2\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00a3\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0085\x04\x02\x01\u0084\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00a4\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00a5\x22\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00a6\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00a8\x04\x02\x01\u00a7\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00aa\x04\x02\x01\u00a9\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00ab\x23\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u008e\x05\x02\x01\u008c\x0d"+
            "\x02\x01\u008d\x0f\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00ad\x04\x02\x01\u00ac\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00b0\x0d\x02\x01\u00ae\x08"+
            "\x02\x01\u00af\x0a\u00ae\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0092\x04\x02\x01\u0091\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u0092\x04\x02\x01\u0091\x1d"+
            "\x02",
            "\x01\x02\x01\u00b1\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00b2\x14\x02",
            "\x01\x02\x01\u00b3\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00b4\x14\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00b5\x09\x02\x0a\u00b5\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00b6\x03\x02\x01\x6b\x05\x02"+
            "\x0a\u00b6\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00b7\x03\x02\x01\u00b8\x05"+
            "\x02\x0a\u00b7\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x01\x02\x01\u00b9\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00ba\x09\x02\x0a\u00ba\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x16\x02\x01\x6f\x10\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00b0\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00bb\x03\x02\x01\u00bc\x05"+
            "\x02\x0a\u00bb\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00bd\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00be\x09\x02\x0a\u00be\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00bf\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00c0\x09\x02\x0a\u00c0\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00a8\x04\x02\x01\u00a7\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00a8\x04\x02\x01\u00a7\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00aa\x04\x02\x01\u00a9\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00c1\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00c2\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00ad\x04\x02\x01\u00ac\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00c4\x04\x02\x01\u00c3\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00c5\x23\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00c6\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00c8\x04\x02\x01\u00c7\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00c9\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00cb\x04\x02\x01\u00ca\x1d"+
            "\x02",
            "\x01\x02\x01\u00cc\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00cd\x14\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00ce\x03\x02\x01\u00cf\x05"+
            "\x02\x0a\u00ce\x02\x02",
            "\x06\x02\x01\uffff\x16\x02\x01\x6f\x10\x02",
            "\x01\x02\x01\u00d0\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00d1\x09\x02\x0a\u00d1\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00d2\x03\x02\x01\u0094\x05"+
            "\x02\x0a\u00d2\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x5d\x01\x2f\x0c\x02\x01\x5e"+
            "\x01\x5b\x05\x02\x01\x5f\x01\x60\x01\x5c\x0a\x5e\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00d3\x09\x02\x0a\u00d3\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00d4\x03\x02\x01\u0097\x05"+
            "\x02\x0a\u00d4\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x64\x01\x2f\x0c\x02\x01\x62"+
            "\x01\x61\x05\x02\x01\x65\x01\x66\x01\x63\x0a\x62\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00d5\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00d6\x09\x02\x0a\u00d6\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00c4\x04\x02\x01\u00c3\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\u00d7\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00d8\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00c8\x04\x02\x01\u00c7\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00c8\x04\x02\x01\u00c7\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00cb\x04\x02\x01\u00ca\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00cb\x04\x02\x01\u00ca\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00d9\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00db\x04\x02\x01\u00da\x1d"+
            "\x02",
            "\x01\x02\x01\u00dc\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00dd\x14\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00de\x09\x02\x0a\u00de\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00df\x03\x02\x01\u00b8\x05"+
            "\x02\x0a\u00df\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2f\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00e0\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00e1\x09\x02\x0a\u00e1\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00db\x04\x02\x01\u00da\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00db\x04\x02\x01\u00da\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\u00e2\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00e4\x04\x02\x01\u00e3\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00e5\x09\x02\x0a\u00e5\x02"+
            "\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\u00e6\x03\x02\x01\u00cf\x05"+
            "\x02\x0a\u00e6\x02\x02",
            "\x06\x02\x01\uffff\x16\x02\x01\x6f\x10\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00e4\x04\x02\x01\u00e3\x1d"+
            "\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\u00e4\x04\x02\x01\u00e3\x1d"+
            "\x02"
    };

    static readonly short[] DFA25_eot = DFA.UnpackEncodedString(DFA25_eotS);
    static readonly short[] DFA25_eof = DFA.UnpackEncodedString(DFA25_eofS);
    static readonly char[] DFA25_min = DFA.UnpackEncodedStringToUnsignedChars(DFA25_minS);
    static readonly char[] DFA25_max = DFA.UnpackEncodedStringToUnsignedChars(DFA25_maxS);
    static readonly short[] DFA25_accept = DFA.UnpackEncodedString(DFA25_acceptS);
    static readonly short[] DFA25_special = DFA.UnpackEncodedString(DFA25_specialS);
    static readonly short[][] DFA25_transition = DFA.UnpackEncodedStringArray(DFA25_transitionS);

    protected class DFA25 : DFA
    {
        public DFA25(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 25;
            this.eot = DFA25_eot;
            this.eof = DFA25_eof;
            this.min = DFA25_min;
            this.max = DFA25_max;
            this.accept = DFA25_accept;
            this.special = DFA25_special;
            this.transition = DFA25_transition;

        }

        override public string Description
        {
            get { return "93:1: s returns [List<VariableDeclare> ids=new List<VariableDeclare>(), string type] : ( ( li ( ':' | 'a' | 'some' ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) | lisIngnorebeing );"; }
        }

    }


    protected internal int DFA25_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA25_26 = input.LA(1);

                   	 
                   	int index25_26 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_26);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA25_45 = input.LA(1);

                   	 
                   	int index25_45 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_45);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA25_6 = input.LA(1);

                   	 
                   	int index25_6 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_6);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 3 : 
                   	int LA25_47 = input.LA(1);

                   	 
                   	int index25_47 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_47);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 4 : 
                   	int LA25_12 = input.LA(1);

                   	 
                   	int index25_12 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_12);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 5 : 
                   	int LA25_16 = input.LA(1);

                   	 
                   	int index25_16 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_16);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 6 : 
                   	int LA25_105 = input.LA(1);

                   	 
                   	int index25_105 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_105);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 7 : 
                   	int LA25_7 = input.LA(1);

                   	 
                   	int index25_7 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_7);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 8 : 
                   	int LA25_13 = input.LA(1);

                   	 
                   	int index25_13 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_13);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 9 : 
                   	int LA25_8 = input.LA(1);

                   	 
                   	int index25_8 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_8);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 10 : 
                   	int LA25_46 = input.LA(1);

                   	 
                   	int index25_46 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZEnu()) ) { s = 18; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_46);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae25 =
            new NoViableAltException(dfa.Description, 25, _s, input);
        dfa.Error(nvae25);
        throw nvae25;
    }
    const string DFA37_eotS =
        "\x48\uffff";
    const string DFA37_eofS =
        "\x01\x02\x47\uffff";
    const string DFA37_minS =
        "\x02\x04\x01\uffff\x01\x00\x04\x04\x01\uffff\x05\x04\x01\x00\x08"+
        "\x04\x01\x00\x14\x04\x01\x00\x01\x04\x01\x00\x19\x04";
    const string DFA37_maxS =
        "\x02\x31\x01\uffff\x01\x00\x04\x31\x01\uffff\x05\x31\x01\x00\x08"+
        "\x31\x01\x00\x14\x31\x01\x00\x01\x31\x01\x00\x19\x31";
    const string DFA37_acceptS =
        "\x02\uffff\x01\x02\x05\uffff\x01\x01\x3f\uffff";
    const string DFA37_specialS =
        "\x03\uffff\x01\x00\x0a\uffff\x01\x01\x08\uffff\x01\x02\x14\uffff"+
        "\x01\x03\x01\uffff\x01\x04\x19\uffff}>";
    static readonly string[] DFA37_transitionS = {
            "\x19\x02\x01\x01\x14\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x05\x0d\x02\x01\x03\x01\x02"+
            "\x01\x06\x01\x07\x05\x02\x01\x04\x0a\x03\x02\x02",
            "",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x03\x02\x01\x05\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x09\x03\x02\x01\x0a\x05\x02"+
            "\x0a\x09\x02\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x0b\x23\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x0c\x14\x02",
            "",
            "\x06\x02\x01\uffff\x04\x02\x01\x0e\x04\x02\x01\x0d\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x0f\x23\x02",
            "\x01\x02\x01\x10\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x11\x03\x02\x01\x12\x05\x02"+
            "\x0a\x11\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x13\x03\x02\x01\x14\x05\x02"+
            "\x0a\x13\x02\x02",
            "\x01\uffff",
            "\x01\x02\x01\x15\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x17\x04\x02\x01\x16\x1d\x02",
            "\x06\x02\x01\uffff\x16\x02\x01\x18\x10\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x19\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x0e\x04\x02\x01\x0d\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x1a\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x1b\x22\x02",
            "\x01\x02\x01\x1c\x04\x02\x01\uffff\x27\x02",
            "\x01\uffff",
            "\x01\x1d\x05\x02\x01\uffff\x27\x02",
            "\x01\x02\x01\x1e\x04\x02\x01\uffff\x27\x02",
            "\x01\x02\x01\x1f\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x20\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x17\x04\x02\x01\x16\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x23\x05\x02\x01\x21\x0d\x02"+
            "\x01\x22\x0f\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x24\x22\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x25\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x26\x09\x02\x0a\x26\x02\x02",
            "\x01\x27\x05\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x23\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x28\x09\x02\x0a\x28\x02\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x29\x14\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x2a\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2c\x04\x02\x01\x2b\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x23\x05\x02\x01\x21\x0d\x02"+
            "\x01\x22\x0f\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2e\x04\x02\x01\x2d\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x31\x0d\x02\x01\x2f\x08\x02"+
            "\x01\x30\x0a\x2f\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x32\x09\x02\x0a\x32\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x33\x03\x02\x01\x14\x05\x02"+
            "\x0a\x33\x02\x02",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x11\x02\x01\x34\x09\x02\x0a\x34\x02\x02",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x16\x02\x01\x18\x10\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x31\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x35\x03\x02\x01\x36\x05\x02"+
            "\x0a\x35\x02\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2c\x04\x02\x01\x2b\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2c\x04\x02\x01\x2b\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x2e\x04\x02\x01\x2d\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x38\x04\x02\x01\x37\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x39\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x3a\x03\x02\x01\x3b\x05\x02"+
            "\x0a\x3a\x02\x02",
            "\x06\x02\x01\uffff\x16\x02\x01\x18\x10\x02",
            "\x01\x02\x01\x3c\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x38\x04\x02\x01\x37\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x3d\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x3e\x22\x02",
            "\x01\x02\x01\x3f\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x40\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x41\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x42\x09\x02\x0a\x42\x02\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x43\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x45\x04\x02\x01\x44\x1d\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x46\x09\x02\x0a\x46\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x47\x03\x02\x01\x3b\x05\x02"+
            "\x0a\x47\x02\x02",
            "\x06\x02\x01\uffff\x16\x02\x01\x18\x10\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x45\x04\x02\x01\x44\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x45\x04\x02\x01\x44\x1d\x02"
    };

    static readonly short[] DFA37_eot = DFA.UnpackEncodedString(DFA37_eotS);
    static readonly short[] DFA37_eof = DFA.UnpackEncodedString(DFA37_eofS);
    static readonly char[] DFA37_min = DFA.UnpackEncodedStringToUnsignedChars(DFA37_minS);
    static readonly char[] DFA37_max = DFA.UnpackEncodedStringToUnsignedChars(DFA37_maxS);
    static readonly short[] DFA37_accept = DFA.UnpackEncodedString(DFA37_acceptS);
    static readonly short[] DFA37_special = DFA.UnpackEncodedString(DFA37_specialS);
    static readonly short[][] DFA37_transition = DFA.UnpackEncodedStringArray(DFA37_transitionS);

    protected class DFA37 : DFA
    {
        public DFA37(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 37;
            this.eot = DFA37_eot;
            this.eof = DFA37_eof;
            this.min = DFA37_min;
            this.max = DFA37_max;
            this.accept = DFA37_accept;
            this.special = DFA37_special;
            this.transition = DFA37_transition;

        }

        override public string Description
        {
            get { return "114:64: ( 'of' ( ( types | structure ) | 'array' '(' lc ')' ( 'of' ( structure | types ) )? | 'queue' 'of' ( types | 'vector' '(' CSTE ')' 'of' ( types | structure ) ) 'buffer' li ( 'header' )? '(' types ( ',' types )* ')' ) )?"; }
        }

    }


    protected internal int DFA37_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA37_3 = input.LA(1);

                   	 
                   	int index37_3 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred47_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index37_3);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA37_14 = input.LA(1);

                   	 
                   	int index37_14 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred47_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index37_14);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA37_23 = input.LA(1);

                   	 
                   	int index37_23 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred47_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index37_23);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 3 : 
                   	int LA37_44 = input.LA(1);

                   	 
                   	int index37_44 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred47_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index37_44);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 4 : 
                   	int LA37_46 = input.LA(1);

                   	 
                   	int index37_46 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred47_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index37_46);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae37 =
            new NoViableAltException(dfa.Description, 37, _s, input);
        dfa.Error(nvae37);
        throw nvae37;
    }
    const string DFA31_eotS =
        "\x1a\uffff";
    const string DFA31_eofS =
        "\x01\x02\x19\uffff";
    const string DFA31_minS =
        "\x02\x04\x01\uffff\x02\x04\x01\x00\x02\x04\x01\uffff\x01\x04\x01"+
        "\x00\x0c\x04\x01\x00\x02\x04";
    const string DFA31_maxS =
        "\x02\x31\x01\uffff\x02\x31\x01\x00\x02\x31\x01\uffff\x01\x31\x01"+
        "\x00\x0c\x31\x01\x00\x02\x31";
    const string DFA31_acceptS =
        "\x02\uffff\x01\x02\x05\uffff\x01\x01\x11\uffff";
    const string DFA31_specialS =
        "\x05\uffff\x01\x00\x04\uffff\x01\x01\x0c\uffff\x01\x02\x02\uffff}>";
    static readonly string[] DFA31_transitionS = {
            "\x19\x02\x01\x01\x14\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x04\x0d\x02\x01\x05\x08\x02"+
            "\x01\x03\x0a\x05\x02\x02",
            "",
            "\x06\x02\x01\uffff\x03\x02\x01\x04\x23\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x06\x03\x02\x01\x07\x05\x02"+
            "\x0a\x06\x02\x02",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x04\x02\x01\x0a\x04\x02\x01\x09\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x0b\x23\x02",
            "",
            "\x06\x02\x01\uffff\x11\x02\x01\x0c\x03\x02\x01\x0d\x05\x02"+
            "\x0a\x0c\x02\x02",
            "\x01\uffff",
            "\x01\x02\x01\x0e\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x0a\x04\x02\x01\x09\x1d\x02",
            "\x06\x02\x01\uffff\x03\x02\x01\x0f\x23\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x10\x22\x02",
            "\x01\x02\x01\x11\x04\x02\x01\uffff\x27\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x12\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x13\x22\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x14\x09\x02\x0a\x14\x02\x02",
            "\x06\x02\x01\uffff\x12\x02\x01\x15\x14\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x17\x04\x02\x01\x16\x1d\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x18\x09\x02\x0a\x18\x02\x02",
            "\x06\x02\x01\uffff\x11\x02\x01\x19\x03\x02\x01\x0d\x05\x02"+
            "\x0a\x19\x02\x02",
            "\x01\uffff",
            "\x06\x02\x01\uffff\x04\x02\x01\x17\x04\x02\x01\x16\x1d\x02",
            "\x06\x02\x01\uffff\x04\x02\x01\x17\x04\x02\x01\x16\x1d\x02"
    };

    static readonly short[] DFA31_eot = DFA.UnpackEncodedString(DFA31_eotS);
    static readonly short[] DFA31_eof = DFA.UnpackEncodedString(DFA31_eofS);
    static readonly char[] DFA31_min = DFA.UnpackEncodedStringToUnsignedChars(DFA31_minS);
    static readonly char[] DFA31_max = DFA.UnpackEncodedStringToUnsignedChars(DFA31_maxS);
    static readonly short[] DFA31_accept = DFA.UnpackEncodedString(DFA31_acceptS);
    static readonly short[] DFA31_special = DFA.UnpackEncodedString(DFA31_specialS);
    static readonly short[][] DFA31_transition = DFA.UnpackEncodedStringArray(DFA31_transitionS);

    protected class DFA31 : DFA
    {
        public DFA31(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 31;
            this.eot = DFA31_eot;
            this.eof = DFA31_eof;
            this.min = DFA31_min;
            this.max = DFA31_max;
            this.accept = DFA31_accept;
            this.special = DFA31_special;
            this.transition = DFA31_transition;

        }

        override public string Description
        {
            get { return "114:113: ( 'of' ( structure | types ) )?"; }
        }

    }


    protected internal int DFA31_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA31_5 = input.LA(1);

                   	 
                   	int index31_5 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred41_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index31_5);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA31_10 = input.LA(1);

                   	 
                   	int index31_10 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred41_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index31_10);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA31_23 = input.LA(1);

                   	 
                   	int index31_23 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred41_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index31_23);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae31 =
            new NoViableAltException(dfa.Description, 31, _s, input);
        dfa.Error(nvae31);
        throw nvae31;
    }
    const string DFA40_eotS =
        "\x1c\uffff";
    const string DFA40_eofS =
        "\x01\x01\x1b\uffff";
    const string DFA40_minS =
        "\x01\x04\x01\uffff\x03\x04\x03\x00\x02\x04\x01\uffff\x01\x04\x01"+
        "\x00\x0c\x04\x01\x00\x02\x04";
    const string DFA40_maxS =
        "\x01\x31\x01\uffff\x03\x31\x03\x00\x02\x31\x01\uffff\x01\x31\x01"+
        "\x00\x0c\x31\x01\x00\x02\x31";
    const string DFA40_acceptS =
        "\x01\uffff\x01\x02\x08\uffff\x01\x01\x11\uffff";
    const string DFA40_specialS =
        "\x05\uffff\x01\x04\x01\x00\x01\x01\x04\uffff\x01\x03\x0c\uffff"+
        "\x01\x02\x02\uffff}>";
    static readonly string[] DFA40_transitionS = {
            "\x0a\x01\x01\x04\x0d\x01\x01\x05\x01\x02\x05\x01\x01\x06\x01"+
            "\x07\x01\x03\x0a\x05\x02\x01",
            "",
            "\x06\x01\x01\uffff\x03\x01\x01\x04\x0d\x01\x01\x05\x06\x01"+
            "\x01\x06\x01\x07\x01\x03\x0a\x05\x02\x01",
            "\x06\x01\x01\uffff\x03\x01\x01\x04\x23\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x08\x03\x01\x01\x09\x05\x01"+
            "\x0a\x08\x02\x01",
            "\x01\uffff",
            "\x01\uffff",
            "\x01\uffff",
            "\x06\x01\x01\uffff\x04\x01\x01\x0c\x04\x01\x01\x0b\x1d\x01",
            "\x06\x01\x01\uffff\x03\x01\x01\x0d\x23\x01",
            "",
            "\x06\x01\x01\uffff\x11\x01\x01\x0e\x03\x01\x01\x0f\x05\x01"+
            "\x0a\x0e\x02\x01",
            "\x01\uffff",
            "\x01\x01\x01\x10\x04\x01\x01\uffff\x27\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x0c\x04\x01\x01\x0b\x1d\x01",
            "\x06\x01\x01\uffff\x03\x01\x01\x11\x23\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x12\x22\x01",
            "\x01\x01\x01\x13\x04\x01\x01\uffff\x27\x01",
            "\x06\x01\x01\uffff\x12\x01\x01\x14\x14\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x15\x22\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x16\x09\x01\x0a\x16\x02\x01",
            "\x06\x01\x01\uffff\x12\x01\x01\x17\x14\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x19\x04\x01\x01\x18\x1d\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x1a\x09\x01\x0a\x1a\x02\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x1b\x03\x01\x01\x0f\x05\x01"+
            "\x0a\x1b\x02\x01",
            "\x01\uffff",
            "\x06\x01\x01\uffff\x04\x01\x01\x19\x04\x01\x01\x18\x1d\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x19\x04\x01\x01\x18\x1d\x01"
    };

    static readonly short[] DFA40_eot = DFA.UnpackEncodedString(DFA40_eotS);
    static readonly short[] DFA40_eof = DFA.UnpackEncodedString(DFA40_eofS);
    static readonly char[] DFA40_min = DFA.UnpackEncodedStringToUnsignedChars(DFA40_minS);
    static readonly char[] DFA40_max = DFA.UnpackEncodedStringToUnsignedChars(DFA40_maxS);
    static readonly short[] DFA40_accept = DFA.UnpackEncodedString(DFA40_acceptS);
    static readonly short[] DFA40_special = DFA.UnpackEncodedString(DFA40_specialS);
    static readonly short[][] DFA40_transition = DFA.UnpackEncodedStringArray(DFA40_transitionS);

    protected class DFA40 : DFA
    {
        public DFA40(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 40;
            this.eot = DFA40_eot;
            this.eof = DFA40_eof;
            this.min = DFA40_min;
            this.max = DFA40_max;
            this.accept = DFA40_accept;
            this.special = DFA40_special;
            this.transition = DFA40_transition;

        }

        override public string Description
        {
            get { return "()* loopback of 115:23: ( ( 'of' )? ( structure | types | 'dynamic' | 'dynamics' ) )*"; }
        }

    }


    protected internal int DFA40_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA40_6 = input.LA(1);

                   	 
                   	int index40_6 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred53_GrammaireZEnu()) ) { s = 10; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index40_6);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA40_7 = input.LA(1);

                   	 
                   	int index40_7 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred53_GrammaireZEnu()) ) { s = 10; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index40_7);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA40_25 = input.LA(1);

                   	 
                   	int index40_25 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred53_GrammaireZEnu()) ) { s = 10; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index40_25);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 3 : 
                   	int LA40_12 = input.LA(1);

                   	 
                   	int index40_12 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred53_GrammaireZEnu()) ) { s = 10; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index40_12);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 4 : 
                   	int LA40_5 = input.LA(1);

                   	 
                   	int index40_5 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred53_GrammaireZEnu()) ) { s = 10; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index40_5);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae40 =
            new NoViableAltException(dfa.Description, 40, _s, input);
        dfa.Error(nvae40);
        throw nvae40;
    }
    const string DFA43_eotS =
        "\x1c\uffff";
    const string DFA43_eofS =
        "\x01\x01\x1b\uffff";
    const string DFA43_minS =
        "\x01\x04\x01\uffff\x01\x04\x01\x00\x02\x04\x02\x00\x01\uffff\x03"+
        "\x04\x01\x00\x0c\x04\x01\x00\x02\x04";
    const string DFA43_maxS =
        "\x01\x31\x01\uffff\x01\x31\x01\x00\x02\x31\x02\x00\x01\uffff\x03"+
        "\x31\x01\x00\x0c\x31\x01\x00\x02\x31";
    const string DFA43_acceptS =
        "\x01\uffff\x01\x02\x06\uffff\x01\x01\x13\uffff";
    const string DFA43_specialS =
        "\x03\uffff\x01\x04\x02\uffff\x01\x03\x01\x02\x04\uffff\x01\x01"+
        "\x0c\uffff\x01\x00\x02\uffff}>";
    static readonly string[] DFA43_transitionS = {
            "\x0a\x01\x01\x05\x0d\x01\x01\x03\x01\x02\x05\x01\x01\x06\x01"+
            "\x07\x01\x04\x0a\x03\x02\x01",
            "",
            "\x06\x01\x01\uffff\x03\x01\x01\x05\x0d\x01\x01\x03\x06\x01"+
            "\x01\x06\x01\x07\x01\x04\x0a\x03\x02\x01",
            "\x01\uffff",
            "\x06\x01\x01\uffff\x03\x01\x01\x05\x23\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x09\x03\x01\x01\x0a\x05\x01"+
            "\x0a\x09\x02\x01",
            "\x01\uffff",
            "\x01\uffff",
            "",
            "\x06\x01\x01\uffff\x04\x01\x01\x0c\x04\x01\x01\x0b\x1d\x01",
            "\x06\x01\x01\uffff\x03\x01\x01\x0d\x23\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x0e\x03\x01\x01\x0f\x05\x01"+
            "\x0a\x0e\x02\x01",
            "\x01\uffff",
            "\x01\x01\x01\x10\x04\x01\x01\uffff\x27\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x0c\x04\x01\x01\x0b\x1d\x01",
            "\x06\x01\x01\uffff\x03\x01\x01\x11\x23\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x12\x22\x01",
            "\x01\x01\x01\x13\x04\x01\x01\uffff\x27\x01",
            "\x06\x01\x01\uffff\x12\x01\x01\x14\x14\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x15\x22\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x16\x09\x01\x0a\x16\x02\x01",
            "\x06\x01\x01\uffff\x12\x01\x01\x17\x14\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x19\x04\x01\x01\x18\x1d\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x1a\x09\x01\x0a\x1a\x02\x01",
            "\x06\x01\x01\uffff\x11\x01\x01\x1b\x03\x01\x01\x0f\x05\x01"+
            "\x0a\x1b\x02\x01",
            "\x01\uffff",
            "\x06\x01\x01\uffff\x04\x01\x01\x19\x04\x01\x01\x18\x1d\x01",
            "\x06\x01\x01\uffff\x04\x01\x01\x19\x04\x01\x01\x18\x1d\x01"
    };

    static readonly short[] DFA43_eot = DFA.UnpackEncodedString(DFA43_eotS);
    static readonly short[] DFA43_eof = DFA.UnpackEncodedString(DFA43_eofS);
    static readonly char[] DFA43_min = DFA.UnpackEncodedStringToUnsignedChars(DFA43_minS);
    static readonly char[] DFA43_max = DFA.UnpackEncodedStringToUnsignedChars(DFA43_maxS);
    static readonly short[] DFA43_accept = DFA.UnpackEncodedString(DFA43_acceptS);
    static readonly short[] DFA43_special = DFA.UnpackEncodedString(DFA43_specialS);
    static readonly short[][] DFA43_transition = DFA.UnpackEncodedStringArray(DFA43_transitionS);

    protected class DFA43 : DFA
    {
        public DFA43(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 43;
            this.eot = DFA43_eot;
            this.eof = DFA43_eof;
            this.min = DFA43_min;
            this.max = DFA43_max;
            this.accept = DFA43_accept;
            this.special = DFA43_special;
            this.transition = DFA43_transition;

        }

        override public string Description
        {
            get { return "()* loopback of 116:26: ( ( 'of' )? ( types | structure | 'dynamic' | 'dynamics' ) )*"; }
        }

    }


    protected internal int DFA43_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA43_25 = input.LA(1);

                   	 
                   	int index43_25 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred59_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index43_25);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA43_12 = input.LA(1);

                   	 
                   	int index43_12 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred59_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index43_12);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA43_7 = input.LA(1);

                   	 
                   	int index43_7 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred59_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index43_7);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 3 : 
                   	int LA43_6 = input.LA(1);

                   	 
                   	int index43_6 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred59_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index43_6);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 4 : 
                   	int LA43_3 = input.LA(1);

                   	 
                   	int index43_3 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred59_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 1; }

                   	 
                   	input.Seek(index43_3);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae43 =
            new NoViableAltException(dfa.Description, 43, _s, input);
        dfa.Error(nvae43);
        throw nvae43;
    }
    const string DFA51_eotS =
        "\x09\uffff";
    const string DFA51_eofS =
        "\x09\uffff";
    const string DFA51_minS =
        "\x02\x0e\x01\x1c\x01\x0f\x01\uffff\x01\x1c\x01\x00\x01\x0f\x01"+
        "\uffff";
    const string DFA51_maxS =
        "\x01\x25\x01\x0e\x01\x2f\x01\x14\x01\uffff\x01\x2f\x01\x00\x01"+
        "\x14\x01\uffff";
    const string DFA51_acceptS =
        "\x04\uffff\x01\x02\x03\uffff\x01\x01";
    const string DFA51_specialS =
        "\x06\uffff\x01\x00\x02\uffff}>";
    static readonly string[] DFA51_transitionS = {
            "\x01\x02\x16\uffff\x01\x01",
            "\x01\x02",
            "\x01\x03\x03\uffff\x01\x04\x05\uffff\x0a\x03",
            "\x01\x06\x04\uffff\x01\x05",
            "",
            "\x01\x07\x03\uffff\x01\x04\x05\uffff\x0a\x07",
            "\x01\uffff",
            "\x01\x06\x04\uffff\x01\x05",
            ""
    };

    static readonly short[] DFA51_eot = DFA.UnpackEncodedString(DFA51_eotS);
    static readonly short[] DFA51_eof = DFA.UnpackEncodedString(DFA51_eofS);
    static readonly char[] DFA51_min = DFA.UnpackEncodedStringToUnsignedChars(DFA51_minS);
    static readonly char[] DFA51_max = DFA.UnpackEncodedStringToUnsignedChars(DFA51_maxS);
    static readonly short[] DFA51_accept = DFA.UnpackEncodedString(DFA51_acceptS);
    static readonly short[] DFA51_special = DFA.UnpackEncodedString(DFA51_specialS);
    static readonly short[][] DFA51_transition = DFA.UnpackEncodedStringArray(DFA51_transitionS);

    protected class DFA51 : DFA
    {
        public DFA51(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 51;
            this.eot = DFA51_eot;
            this.eof = DFA51_eof;
            this.min = DFA51_min;
            this.max = DFA51_max;
            this.accept = DFA51_accept;
            this.special = DFA51_special;
            this.transition = DFA51_transition;

        }

        override public string Description
        {
            get { return "119:1: structure : ( ( ( 'structure' )? '(' ( types ) ( ',' types )* ')' )=> ( 'structure' )? '(' types ( ',' types )* ')' | ( 'structure' )? '(' ( types | 'vector' '(' CSTE ')' 'of' types ) ( ',' ( types | 'vector' '(' CSTE ')' 'of' types ) )* ')' );"; }
        }

    }


    protected internal int DFA51_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA51_6 = input.LA(1);

                   	 
                   	int index51_6 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred62_GrammaireZEnu()) ) { s = 8; }

                   	else if ( (true) ) { s = 4; }

                   	 
                   	input.Seek(index51_6);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae51 =
            new NoViableAltException(dfa.Description, 51, _s, input);
        dfa.Error(nvae51);
        throw nvae51;
    }
 

    public static readonly BitSet FOLLOW_algoz_in_program66 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_algoz88 = new BitSet(new ulong[]{0x0003FFFFFFFFFBF0UL});
    public static readonly BitSet FOLLOW_ps_in_algoz93 = new BitSet(new ulong[]{0x0000000000000400UL});
    public static readonly BitSet FOLLOW_10_in_algoz102 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_lisIngnore_in_algoz106 = new BitSet(new ulong[]{0x0000000000000800UL});
    public static readonly BitSet FOLLOW_11_in_algoz110 = new BitSet(new ulong[]{0x0000000000013002UL});
    public static readonly BitSet FOLLOW_12_in_algoz119 = new BitSet(new ulong[]{0x0000000000012002UL});
    public static readonly BitSet FOLLOW_fon_in_algoz129 = new BitSet(new ulong[]{0x0000000000013002UL});
    public static readonly BitSet FOLLOW_act_in_algoz136 = new BitSet(new ulong[]{0x0000000000013002UL});
    public static readonly BitSet FOLLOW_12_in_algoz140 = new BitSet(new ulong[]{0x0000000000012002UL});
    public static readonly BitSet FOLLOW_13_in_act172 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_ID_in_act176 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_14_in_act182 = new BitSet(new ulong[]{0x0000000000008010UL});
    public static readonly BitSet FOLLOW_li_in_act186 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_act189 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_12_in_act195 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_definition_in_act200 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_ps_in_act205 = new BitSet(new ulong[]{0x0000000000000400UL});
    public static readonly BitSet FOLLOW_10_in_act213 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_lisIngnore_in_act217 = new BitSet(new ulong[]{0x0000000000000800UL});
    public static readonly BitSet FOLLOW_11_in_act221 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_16_in_fon251 = new BitSet(new ulong[]{0x0000000000004010UL});
    public static readonly BitSet FOLLOW_ID_in_fon255 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_fon258 = new BitSet(new ulong[]{0x0000000000008010UL});
    public static readonly BitSet FOLLOW_li_in_fon262 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_fon265 = new BitSet(new ulong[]{0x0000000000020000UL});
    public static readonly BitSet FOLLOW_17_in_fon267 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_typ_in_fon271 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_definition_in_fon276 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_ps_in_fon281 = new BitSet(new ulong[]{0x0000000000000400UL});
    public static readonly BitSet FOLLOW_10_in_fon289 = new BitSet(new ulong[]{0x0003FFFFFFFFFFF0UL});
    public static readonly BitSet FOLLOW_lisIngnore_in_fon293 = new BitSet(new ulong[]{0x0000000000000800UL});
    public static readonly BitSet FOLLOW_11_in_fon297 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_lisIngnore324 = new BitSet(new ulong[]{0x0003FFFFFFFFF7F2UL});
    public static readonly BitSet FOLLOW_set_in_lisIngnorebeing345 = new BitSet(new ulong[]{0x0003FFFFFFFFFBF2UL});
    public static readonly BitSet FOLLOW_s_in_ps374 = new BitSet(new ulong[]{0x0000000000001000UL});
    public static readonly BitSet FOLLOW_12_in_ps410 = new BitSet(new ulong[]{0x0003FFFFFFFFFBF2UL});
    public static readonly BitSet FOLLOW_definition_in_ps418 = new BitSet(new ulong[]{0x0003FFFFFFFFFBF0UL});
    public static readonly BitSet FOLLOW_s_in_ps423 = new BitSet(new ulong[]{0x0000000000001000UL});
    public static readonly BitSet FOLLOW_12_in_ps447 = new BitSet(new ulong[]{0x0003FFFFFFFFFBF2UL});
    public static readonly BitSet FOLLOW_li_in_s469 = new BitSet(new ulong[]{0x00000000000E0000UL});
    public static readonly BitSet FOLLOW_set_in_s471 = new BitSet(new ulong[]{0x0000FFE15DE16000UL});
    public static readonly BitSet FOLLOW_typ_in_s482 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_13_in_s489 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_16_in_s493 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_s495 = new BitSet(new ulong[]{0x0000FFE15DE04000UL});
    public static readonly BitSet FOLLOW_typ_in_s499 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_s501 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_lisIngnorebeing_in_s517 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_ID_in_li538 = new BitSet(new ulong[]{0x0000000000100002UL});
    public static readonly BitSet FOLLOW_20_in_li545 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_li549 = new BitSet(new ulong[]{0x0000000000100002UL});
    public static readonly BitSet FOLLOW_types_in_typ569 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_21_in_typ574 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_22_in_typ580 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structure_in_typ586 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_typ593 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_typ599 = new BitSet(new ulong[]{0x000000001C0E0000UL});
    public static readonly BitSet FOLLOW_sep_in_typ601 = new BitSet(new ulong[]{0x000000001C000000UL});
    public static readonly BitSet FOLLOW_set_in_typ607 = new BitSet(new ulong[]{0x0000000020000002UL});
    public static readonly BitSet FOLLOW_29_in_typ617 = new BitSet(new ulong[]{0x0000FFE0D0004000UL});
    public static readonly BitSet FOLLOW_types_in_typ621 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structure_in_typ625 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_30_in_typ630 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_typ632 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_lc_in_typ634 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_typ636 = new BitSet(new ulong[]{0x0000000020000002UL});
    public static readonly BitSet FOLLOW_29_in_typ639 = new BitSet(new ulong[]{0x0000FFE010004000UL});
    public static readonly BitSet FOLLOW_structure_in_typ641 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_types_in_typ645 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_31_in_typ653 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_typ655 = new BitSet(new ulong[]{0x0000FFC110000000UL});
    public static readonly BitSet FOLLOW_types_in_typ659 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_32_in_typ663 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_typ665 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_CSTE_in_typ667 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_typ669 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_typ671 = new BitSet(new ulong[]{0x0000FFE010004000UL});
    public static readonly BitSet FOLLOW_types_in_typ674 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_structure_in_typ679 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_33_in_typ684 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_li_in_typ686 = new BitSet(new ulong[]{0x0000000400004000UL});
    public static readonly BitSet FOLLOW_34_in_typ689 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_typ693 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_typ695 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_20_in_typ698 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_typ700 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_15_in_typ705 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_30_in_typ713 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_typ715 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_lc_in_typ717 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_typ719 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_29_in_typ722 = new BitSet(new ulong[]{0x0000FFF810004000UL});
    public static readonly BitSet FOLLOW_structure_in_typ725 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_types_in_typ729 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_35_in_typ733 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_36_in_typ737 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_32_in_typ746 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_typ748 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_CSTE_in_typ750 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_typ752 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_29_in_typ755 = new BitSet(new ulong[]{0x0000FFF810004000UL});
    public static readonly BitSet FOLLOW_types_in_typ759 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_structure_in_typ764 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_35_in_typ768 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_36_in_typ772 = new BitSet(new ulong[]{0x0000FFF830004002UL});
    public static readonly BitSet FOLLOW_37_in_structure813 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_structure817 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_structure819 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_20_in_structure822 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_structure824 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_15_in_structure830 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_37_in_structure838 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_structure842 = new BitSet(new ulong[]{0x0000FFC110000000UL});
    public static readonly BitSet FOLLOW_types_in_structure845 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_32_in_structure849 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_structure851 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_CSTE_in_structure853 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_structure855 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_structure857 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_structure859 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_20_in_structure864 = new BitSet(new ulong[]{0x0000FFC110000000UL});
    public static readonly BitSet FOLLOW_types_in_structure868 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_32_in_structure872 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_structure874 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_CSTE_in_structure876 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_structure878 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_structure880 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_structure882 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_15_in_structure889 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_CSTE_in_lc902 = new BitSet(new ulong[]{0x0000000000100002UL});
    public static readonly BitSet FOLLOW_20_in_lc905 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_CSTE_in_lc907 = new BitSet(new ulong[]{0x0000000000100002UL});
    public static readonly BitSet FOLLOW_set_in_sep0 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_types0 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_definition0 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_ID_in_synpred6_GrammaireZEnu176 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_14_in_synpred8_GrammaireZEnu182 = new BitSet(new ulong[]{0x0000000000008010UL});
    public static readonly BitSet FOLLOW_li_in_synpred8_GrammaireZEnu186 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_synpred8_GrammaireZEnu189 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_12_in_synpred9_GrammaireZEnu195 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred10_GrammaireZEnu200 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred12_GrammaireZEnu200 = new BitSet(new ulong[]{0x0003FFFFFFFFFBF2UL});
    public static readonly BitSet FOLLOW_ps_in_synpred12_GrammaireZEnu205 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_typ_in_synpred15_GrammaireZEnu271 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred16_GrammaireZEnu276 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred18_GrammaireZEnu276 = new BitSet(new ulong[]{0x0003FFFFFFFFFBF2UL});
    public static readonly BitSet FOLLOW_ps_in_synpred18_GrammaireZEnu281 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_synpred20_GrammaireZEnu345 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred21_GrammaireZEnu418 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_li_in_synpred27_GrammaireZEnu469 = new BitSet(new ulong[]{0x00000000000E0000UL});
    public static readonly BitSet FOLLOW_set_in_synpred27_GrammaireZEnu471 = new BitSet(new ulong[]{0x0000FFE15DE16000UL});
    public static readonly BitSet FOLLOW_typ_in_synpred27_GrammaireZEnu482 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_13_in_synpred27_GrammaireZEnu489 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_16_in_synpred27_GrammaireZEnu493 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred27_GrammaireZEnu495 = new BitSet(new ulong[]{0x0000FFE15DE04000UL});
    public static readonly BitSet FOLLOW_typ_in_synpred27_GrammaireZEnu499 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_synpred27_GrammaireZEnu501 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_types_in_synpred29_GrammaireZEnu569 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_29_in_synpred41_GrammaireZEnu639 = new BitSet(new ulong[]{0x0000FFE010004000UL});
    public static readonly BitSet FOLLOW_structure_in_synpred41_GrammaireZEnu641 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_types_in_synpred41_GrammaireZEnu645 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_29_in_synpred47_GrammaireZEnu617 = new BitSet(new ulong[]{0x0000FFE0D0004000UL});
    public static readonly BitSet FOLLOW_types_in_synpred47_GrammaireZEnu621 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structure_in_synpred47_GrammaireZEnu625 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_30_in_synpred47_GrammaireZEnu630 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred47_GrammaireZEnu632 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_lc_in_synpred47_GrammaireZEnu634 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_synpred47_GrammaireZEnu636 = new BitSet(new ulong[]{0x0000000020000002UL});
    public static readonly BitSet FOLLOW_29_in_synpred47_GrammaireZEnu639 = new BitSet(new ulong[]{0x0000FFE010004000UL});
    public static readonly BitSet FOLLOW_structure_in_synpred47_GrammaireZEnu641 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_types_in_synpred47_GrammaireZEnu645 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_31_in_synpred47_GrammaireZEnu653 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_synpred47_GrammaireZEnu655 = new BitSet(new ulong[]{0x0000FFC110000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred47_GrammaireZEnu659 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_32_in_synpred47_GrammaireZEnu663 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred47_GrammaireZEnu665 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_CSTE_in_synpred47_GrammaireZEnu667 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_synpred47_GrammaireZEnu669 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_synpred47_GrammaireZEnu671 = new BitSet(new ulong[]{0x0000FFE010004000UL});
    public static readonly BitSet FOLLOW_types_in_synpred47_GrammaireZEnu674 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_structure_in_synpred47_GrammaireZEnu679 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_33_in_synpred47_GrammaireZEnu684 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_li_in_synpred47_GrammaireZEnu686 = new BitSet(new ulong[]{0x0000000400004000UL});
    public static readonly BitSet FOLLOW_34_in_synpred47_GrammaireZEnu689 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred47_GrammaireZEnu693 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred47_GrammaireZEnu695 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_20_in_synpred47_GrammaireZEnu698 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred47_GrammaireZEnu700 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_15_in_synpred47_GrammaireZEnu705 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_synpred48_GrammaireZEnu593 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_synpred48_GrammaireZEnu599 = new BitSet(new ulong[]{0x000000001C0E0000UL});
    public static readonly BitSet FOLLOW_sep_in_synpred48_GrammaireZEnu601 = new BitSet(new ulong[]{0x000000001C000000UL});
    public static readonly BitSet FOLLOW_set_in_synpred48_GrammaireZEnu607 = new BitSet(new ulong[]{0x0000000020000002UL});
    public static readonly BitSet FOLLOW_29_in_synpred48_GrammaireZEnu617 = new BitSet(new ulong[]{0x0000FFE0D0004000UL});
    public static readonly BitSet FOLLOW_types_in_synpred48_GrammaireZEnu621 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structure_in_synpred48_GrammaireZEnu625 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_30_in_synpred48_GrammaireZEnu630 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred48_GrammaireZEnu632 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_lc_in_synpred48_GrammaireZEnu634 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_synpred48_GrammaireZEnu636 = new BitSet(new ulong[]{0x0000000020000002UL});
    public static readonly BitSet FOLLOW_29_in_synpred48_GrammaireZEnu639 = new BitSet(new ulong[]{0x0000FFE010004000UL});
    public static readonly BitSet FOLLOW_structure_in_synpred48_GrammaireZEnu641 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_types_in_synpred48_GrammaireZEnu645 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_31_in_synpred48_GrammaireZEnu653 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_synpred48_GrammaireZEnu655 = new BitSet(new ulong[]{0x0000FFC110000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred48_GrammaireZEnu659 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_32_in_synpred48_GrammaireZEnu663 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred48_GrammaireZEnu665 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_CSTE_in_synpred48_GrammaireZEnu667 = new BitSet(new ulong[]{0x0000000000008000UL});
    public static readonly BitSet FOLLOW_15_in_synpred48_GrammaireZEnu669 = new BitSet(new ulong[]{0x0000000020000000UL});
    public static readonly BitSet FOLLOW_29_in_synpred48_GrammaireZEnu671 = new BitSet(new ulong[]{0x0000FFE010004000UL});
    public static readonly BitSet FOLLOW_types_in_synpred48_GrammaireZEnu674 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_structure_in_synpred48_GrammaireZEnu679 = new BitSet(new ulong[]{0x0000000200000000UL});
    public static readonly BitSet FOLLOW_33_in_synpred48_GrammaireZEnu684 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_li_in_synpred48_GrammaireZEnu686 = new BitSet(new ulong[]{0x0000000400004000UL});
    public static readonly BitSet FOLLOW_34_in_synpred48_GrammaireZEnu689 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred48_GrammaireZEnu693 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred48_GrammaireZEnu695 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_20_in_synpred48_GrammaireZEnu698 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred48_GrammaireZEnu700 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_15_in_synpred48_GrammaireZEnu705 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_29_in_synpred53_GrammaireZEnu722 = new BitSet(new ulong[]{0x0000FFF810004000UL});
    public static readonly BitSet FOLLOW_structure_in_synpred53_GrammaireZEnu725 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_types_in_synpred53_GrammaireZEnu729 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_35_in_synpred53_GrammaireZEnu733 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_36_in_synpred53_GrammaireZEnu737 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_29_in_synpred59_GrammaireZEnu755 = new BitSet(new ulong[]{0x0000FFF810004000UL});
    public static readonly BitSet FOLLOW_types_in_synpred59_GrammaireZEnu759 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structure_in_synpred59_GrammaireZEnu764 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_35_in_synpred59_GrammaireZEnu768 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_36_in_synpred59_GrammaireZEnu772 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_37_in_synpred62_GrammaireZEnu790 = new BitSet(new ulong[]{0x0000000000004000UL});
    public static readonly BitSet FOLLOW_14_in_synpred62_GrammaireZEnu794 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred62_GrammaireZEnu797 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_20_in_synpred62_GrammaireZEnu801 = new BitSet(new ulong[]{0x0000FFC010000000UL});
    public static readonly BitSet FOLLOW_types_in_synpred62_GrammaireZEnu803 = new BitSet(new ulong[]{0x0000000000108000UL});
    public static readonly BitSet FOLLOW_15_in_synpred62_GrammaireZEnu809 = new BitSet(new ulong[]{0x0000000000000002UL});

}
}